The names "curry" and "uncurry" were a bit confusing to me, so it took
me a while to understand these two functions...
http://en.wikipedia.org/wiki/Currying
To me (and probably other non-Haskell users) the names imply the same
thing as bind or partial. It's a confusing world... :-(
In JavaScript, I think plain apply + MochiKit.Base.bind does the same thing:
var test = [ [10, 1], [20, 2], [30, 3] ];
var addArray = bind("apply", operator.add, null);
assertEqual(map(addArray, test), [11, 22, 33]);
It's no beauty, so perhaps this particular variant of bind merits an
alias? Uncurrying is just the same as the built-in apply function, so
that seems unnecessary.
Cheers,
/Per
On Wed, Dec 17, 2008 at 5:22 PM, Arnar Birgisson <[email protected]> wrote:
>
> One thing I think could be useful is to port Haskell's curry and
> uncurry. This is basically a convenience method for (un)wrapping an
> .apply on a function object:
>
> function curry(f) {
> return function () {
> // first convert arguments to a regular array
> var args = Array.prototype.slice.call(arguments);
> return f(args);
> }
> }
>
> function uncurry(f) {
> return function (args) {
> return f.apply(this, args);
> }
> }
>
> Example use:
> test = [ [10, 1],
> [20, 2],
> [30, 3] ];
>
> assertEqual(map(uncurry(operator.plus), test), [11, 22, 33]);
>
> // assume join is a function that takes a list and returns a string
> // with the elements joined with some delimiter
>
> f = curry(partial(join, _, ", "))
> assert(f("Bond", "James Bond") == "Bond, James Bond")
>
> Does anyone else think this could be useful? What module would it fit?
> Base already has a lot of functional stuff (compose, partial, map &
> friends) - I'm wondering if it fits there or if all the functional
> stuff should be in a seperate module MochiKit.Functional - as Python
> seems to be heading.
>
> cheers,
> Arnar
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"MochiKit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/mochikit?hl=en
-~----------~----~----~----~------~----~------~--~---