See here (https://github.com/JuliaLang/julia/issues/554) for discussion on 
currying in Julia.

On Wednesday, June 18, 2014 6:01:38 PM UTC-5, Peter Simon wrote:
>
> How about
>
> pairs = [e for e in enumerate(sqr)] 
> filter(p -> +(p...)%4 != 0, pairs)
>
> ?
>
> --Peter
>
> On Wednesday, June 18, 2014 3:34:24 PM UTC-7, gentlebeldin wrote:
>>
>> When you come across Julia, and know (a bit of) Haskell, comparisons are 
>> inevitable. Haskell has only functions with one argument, but the function 
>> value may be another function. It takes some time to wrap your brain around 
>> that idea, but hey, it works.
>> Another type of functions with just one argument, possibly a tuple, may 
>> work as well, I guess, and that seemed to be the choice for Julia: 
>> uncurried.
>> So let's define a function taking a pair: f=(x,y)->x*y, and define a 
>> pair: p=(2,3), and feed it to our function: f(p)
>> ERROR: wrong number of arguments
>> Oops... 
>> Suppose we have an array, sqr=[i^2 for i=1:5], and want to filter it, but 
>> depending on the index, too. There's a function for that, enumerate. Let's 
>> assume we want only those values where the index plus value (square) isn't 
>> divisible by 4. Check enumerate: [e for e in enumerate(sqr)]:
>> 5-element Array{(Int64,Any),1}:
>>  (1,1) 
>>  (2,4) 
>>  (3,9) 
>>  (4,16)
>>  (5,25)
>> Ok, those are pairs, so let's filter:
>> filter((x,y)->(x+y)%4!=0,[e for e in enumerate(sqr)])
>> You guessed it, same "oops" as above.
>> Well, you can work around that mess, naturally, but looking at the 
>> candidates...
>> filter(p->(p[1]+p[2])%4!=0,[e for e in enumerate(sqr)])
>> filter(p->(first(p)+last(p))%4!=0,[e for e in enumerate(sqr)])
>> filter(p->((x,y)->(x+y)%4!=0)(p...),[e for e in enumerate(sqr)])
>> All of them work, but what would be your favorite obfuscation of a simple 
>> thought? The last example suggests that the whole mess may be collateral 
>> damage from supporting varargs, but... is it worth that?
>> Don't get me wrong, I like Julia, there's a lot of nice and powerful 
>> concepts, like multipe dispatch, but why does she have to have those warts 
>> right on her nose? ;-)
>>
>>

Reply via email to