[Haskell-beginners] anonymous arguments

Twan van Laarhoven twanvl at gmail.com
Sun Dec 29 13:24:13 UTC 2013


On 2013-12-29 13:47, harry wrote:
> Tony Morris <tmorris <at> tmorris.net> writes:
>>
>>
>> (`foo` 3)
>> Scala is very limited when it comes to this point free code.
>>
>> On 29/12/2013 10:17 PM, "harry" <voldermort <at> hotmail.com> wrote:
>>
>> Is there any reason not to include Scala-like anonymous arguments in
>> Haskell? For example, I would like to write
>>    map (\x -> foo x 3)
>> as
>>    map (foo _ 3)
>> The named argument in this and similar cases adds nothing but visual and
>> namespace clutter.
>
> How about a slightly more complex example?
>
>    map (\x -> foo 4 'f' (bar x) 5 'j')
>
> There comes a point where point-free notation becomes unreadable.

If you write

     map (foo 4 'f' (bar _) 5 'j')

How would the compiler know whether you meant

     map (\x -> foo 4 'f' (bar x) 5 'j')

or

     map (foo 4 'f' (\x -> bar x) 5 'j')

?

Lambda's make it explicit where the variable is bound, which is a good thing, IMO.


Twan


More information about the Beginners mailing list