Do you know what is $ operator in Haskell?
$ means simply , 'apply the left function at the right value'.
f $ x := f x
it seems really trivial, isn't it ?
But, for example in this kind of situation, is really usefull:
zipWith ( $ ) ( cycle [ \x -> div (x + 1) 2 , \x -> div x 2 ] ) [1..]
here you have a infinite list of function:
a = cycle [ \x -> div (x + 1) 2 , \x -> div x 2 ]
( ie: [\x -> div (x + 1) 2 , \x -> div x 2 , \x -> div (x + 1) 2 , \x -> div x 2, ... ] )
and you want to apply every element of the list at the element
at the same index in the second list:
b = [1..]
zipWith, for every index i takes the element a(i) of the left list
and b(i) of the right list and execute what is requested inside the parentheses.
In this situation is specified $ so:
a(i) $ b(i ) := a(i) ( b(i) )
the result must be the following:
[ 1 ,1 , 2, 2 , 3 ,3 ... and so on.
martedì 8 dicembre 2009
Dollar $ operator in Haskell
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento