[Haskell-cafe] Partially applied functions

Ozgur Akgun ozgurakgun at gmail.com
Sat Nov 28 12:01:02 EST 2009


Answering my own question, one can achieve the goal via doing a lookup, if
the number of possible parameters is limited.
eg. assume add is a function which can only take Int's from [0..9].

Interestingly, my situation is exactly like this. I think I'll implement
such a lookup.

The question is still open though, if somebody has some magic to extract the
prameter from an applied function...

2009/11/28 Ozgur Akgun <ozgurakgun at gmail.com>

> Sorry, no good.
>
> I don't want to guess the first paramater, I really want to access it.
>
> 2009/11/28 Steffen Schuldenzucker <sschuldenzucker at uni-bonn.de>
>
> Ozgur Akgun wrote:
>> > Hi cafe,
>> >
>> > Is such a thing possible,
>> >
>> >
>> > add :: Int -> Int -> Int
>> > add x y = x + y
>> >
>> > -- a list of partially applied functions
>> > adds = [add 3, add 5, add 7, add 3, add 5, add 8]
>> >
>> > -- an example usage of the list
>> > k = map (\ f -> f 10 ) adds
>> >
>> > add3s = filter (?) adds -- add3s = [add 3, add 3]
>> > addEvens = filter (?) adds --addEvens = [add 8]
>> >
>> >
>> > I want to have functions in place of the ? signs. I guess one would need
>> > a way of extracting the applied value from a partially applied function
>> > (or totally, doesn't matter)
>>
>> Well, sure you can:
>>
>> add3s = filter (\f -> f 0 == 3) adds
>> addEvens = filter (\f -> isEven $ f 0) adds
>>
>> This is only possible since there is that special property of the
>> addition that (add a) 0 == a forall a, i.e. you can extract the first
>> parameter back out of the partial applied function by passing 0 as a
>> second parameter.
>>
>> It clearly depends on the function how much information about the
>> parameters can be read from the result.
>>
>>
>> -- Steffen
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>
>
>
> --
> Ozgur Akgun
>



-- 
Ozgur Akgun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20091128/ae9ccb84/attachment-0001.html


More information about the Haskell-Cafe mailing list