Last active
August 5, 2019 20:51
-
-
Save kutyel/818937bda1bf1f513ff63e517342d194 to your computer and use it in GitHub Desktop.
My own implementation of curry π
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Ultimate version | |
const curry = (f, ...args) => | |
f.length <= args.length | |
? f(...args) | |
: x => curry(f, ...args, x) |
Hi Rachel! Thanks for the compliments, I'm glad you like the talk!
const curry = (f, ...args) => f.length <= args.length ? f(...args) : x => curry(f, ...args, x)
The argz
thing was added by @ericelliott, I don't really remember now why to be honest π
Thanks @kutyel! I'd remove all the additional parameters. For example, this situation would be possible:
const sum = (a, b) => a + b;
const curriedSum = curry(sum);
const wrongCurriedSum1 = curry(sum, 2); // a function with one parameter
console.log(wrongCurriedSum1(3)); // 5
const wrongCurriedSum2 = curry(sum, 2, 3); // not a function, but 5
const wrongCurriedSum3 = curry(sum, 2, 3, 4); // not a function, but 5
Thanks again!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi! I'm here because I watched again your talk about Lenses in Lambda World (again = I was there that day π ). Congrats for it!
I would like to know what do you think about these concerns:
arity
could be passed.(...argz)
.Here I have another version to avoid those things: https://gist.github.com/rachelcarmena/196b9f8b1c6b078b65fb1328f09c0269
What do you think about it? Do you think that my concerns make sense?
Thanks in advance!