[Haskell-cafe] Re: Grokking monads by not overlooking concatMap

Achim Schneider barsoap at web.de
Mon May 5 13:04:49 EDT 2008


Peter Hercek <phercek at gmail.com> wrote:

> Achim Schneider wrote:
> > -- That's the one I've been looking for. Remember that
> > -- return e = [e]
> > f'''' = concatMap 
> >         (\x -> concatMap 
> >             (\y -> concatMap 
> >                 (\_ -> [(x,y)])
> >                 (if x*y == 8 then [()] else []))
> >             [2..8])
> >         [1..4]
> > 
> > Morale: Premature term elimination is the root of all
> > misunderstanding.
> > 
> > Haskell wins the wickedness of design contest by using [()] and []
> > as truth values.
> 
> Maybe you wanted to say: "... by using [()] as True value and [] as
>   False value" ... which does not seem that wicked (at least to me).
> 
Strangely enough, it reads exactly the same to me. IMHO, not working
like filter is the thing that makes this wicked: guard doesn't care
about what is returned, you could as well say (\_ -> [("foo","bar")])


-- 
(c) this sig last receiving data processing entity. Inspect headers for
past copyright information. All rights reserved. Unauthorised copying,
hiring, renting, public performance and/or broadcasting of this
signature prohibited. 



More information about the Haskell-Cafe mailing list