Skip to main content

I did some currying today

I came across this problem on Daily Coding Problem

This problem was asked by Squarespace.

Write a function, add_subtract, which alternately adds and subtracts curried arguments. Here are some sample operations:

add_subtract(7) -> 7

add_subtract(1)(2)(3) -> 1 + 2 - 3 -> 0

add_subtract(-5)(10)(3)(9) -> -5 + 10 - 3 + 9 -> 11

I didn't have an answer from the top of my head. I decided to get some help from Google and see what I could learn in the process. Before going further in my blog post, see if you can come up with a solution and comment how that went. First thing for me was to learn about currying in javascript. The first link I came across was this one


But it does not cover infinite currying which is what I needed. I then went through a bunch of searches and articles trying to understand as much as I could. This next article stood out to me because of how simple the solution was but it could not be modified to cater for alternating addition and subtraction. To do this I figured I needed access the position in the arguments list.


Some of the things you might come across while researching are perpetual curry or infinite curry, variadic currying, partial application vs currying, arity, single level currying, composition and closure. This final link did the best in explaining currying to me and had an example of infinite currying.


I was able to modify the example to come up with a solution. This is what I have so far with minimal testing in replit.



Replit now has a mobile app which I talked about on my youtube channel - Replit Mobile App - Coding on my aging budget Android phone in Trinidad

Basically I had to check for every even argument and make that argument negative as follows

args.reduce((acc, a, l) => {
if (l%2 == 0 && l != 0) a=a*-1;

At first I had l=args.length. This was a mistake but did not matter because l is replaced by index. The 3rd parameter of reduce is the index and refers to the number of times the reducer has looped over the array. The problem does not use a terminator and an improvement to my solution would be to not use a terminator. I have never had to use currying before and there are articles that discuss real world examples of using currying. Share your thoughts with us in the comments below.

Comments

Popular posts from this blog

Talking to God

If you want real answers to things in life then talk to God. It is 639pm on a holiday and I have decided to write. God listens. God truly listens. God has the entire context. God is wise. God wants us to talk to Him. God wants us to rely on Him. I also think about God talking to me. I am a good listener. I listen plenty more than I talk. I have started asking God to talk to me. But how would God talk to me? We have his revelations through the holy book. We have the example of prophets. But what else? How do I listen to what God has to say? Where and when can I hear God? Are my thoughts from God? I try to feed my mind with good things. Things that will not corrupt my mind. It seems that we have to use our intuition to separate what is from God and what is not from God. My friend Chatty says that in Islam, Allah speaks to us not through new revelations or voices, but through guidance: the Quran and the Sunnah, which become personally meaningful through understanding Allah places in the h...

Life on Earth

I was reading through the Quran and came to the story of Adam, Eve, Satan, and the forbidden fruit tree. I had thought that life on Earth was created as a test. But as I reflected on the story, I began to wonder whether we are only here because Adam and Eve failed. However, that is not the case, as my friend Gemini explained to me. While the story of the forbidden fruit is a central event, the Quran indicates that humanity’s presence on Earth was part of the original divine plan, rather than a backup plan or a punishment for sin. Before Adam was even created, God announced His intention to place a steward (khalifah) on Earth. This suggests that the Garden was a temporary training ground—designed to teach Adam and Eve about free will, temptation, and the path of repentance. Even if they had not eaten from the tree, they were destined for Earth to fulfill their roles as moral agents. The incident simply served as a necessary first lesson in human frailty and God’s immediate forgiveness. ...

The success of failure

It is 358am and I have decided to write. Context matters. Our context matters when we write and read. We could read the same thing and get different meanings. Definitions matter also. We may define things differently. For example, what is success? What is failure? Also, do I just define success and say that anything that is not success is failure? What about something like the success of failure? What does that mean? My friend Chatty tells me that this is something writers, philosophers, and even scientists keep rediscovering: meaning is not fixed—it is negotiated by context and definition. Life is a stew of success and failure and in between but never one or the other. We see what we are looking for and things become what we see. This reminds me of something I came across online, "Whoever looks for the good qualities in others will acquire all good qualities within himself," from Habib Umar Bin Hafiz. Do you look for failure or success within others? Take context as the lens...