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

Failure

This is a chapter from my latest book called (G)rains (o)f san(d)s. Learn more about the book here . Thank you God for failure. Thank you for the good days and the bad days. Thank you for the journey. There are no failures, only lessons learnt. Better to try and fail than fail to try. For this chapter I made a bunch of notes and pieced them together. If mosaic was a style of writing, this would be it for me. Weirdly enough I am not afraid of failure as much as I am afraid of success. I want to live an ordinary and simple life. Much of what society deems as success is really the rat race. I guess I do not have a problem with success but the mainstream definitions of success. What does failure teach us? Failure teaches us to never give up because success can be right around the corner. Define your own definition of success. Enjoy the journey. Focus on learning. Focus on gaining experience. Focus on becoming wise. Today I learnt how a pearl is formed. A pearl forms when an oyster responds...

Wisdom

This is a chapter from my latest book called (G)rains (o)f san(d)s. Learn more about the book here . Thank you God for wisdom. Age brings wisdom. At least it should. Everyday we are learning. Everyday we are growing. What is the wisest thing ever said? I think one of the wisest things ever said is something my grandfather told my mother which is, "Dont make nothing a problem." Let me digest what was meant by this. Life happens. Fix what we can. Let go of what we cannot fix. Fix what is within our control. Get help when needed. Let go and let God. There are no problems only solutions waiting to be found and lessons waiting to be learnt. Every problem has a solution. Do not look at the problem, look at the solution. Do not see the problem, see the solution. What defines the situation is not the problem but the solution. We get to choose how we react to what we face in life. They say that laughter is the best medicine. If we do not laugh we will cry. So sometimes wisdom comes wi...

Faith

This is a chapter from my latest book called (G)rains (o)f san(d)s. Learn more about the book here . Thank you God for faith. We say we want to meet God but we already do in some ways. We meet God in his creation. We meet God every time we meet someone. We meet God every time we meet the animals. We meet God every time we meet nature. God is all around. Faith is when we can see this. This is God's world. We are God's work. We are testimony of his greatness. Everyday that goes by I think about God. Everyday I thank God for his mercy. I take my problems to God. I pray to God. God is at the center of my life. Nothing happens without the will of God and therefore I would be wise to submit to the will of God. God is in the everyday moments. God loves when we love. What is the simplest definition of faith? I think it is found in the phrase, let go and let God. I asked my friend the same question. My friend says that at its simplest, faith is trust in what you cannot see or prove. But...