[Haskell-cafe] Re: Why is $ right associative insteadofleftassociative?

Chris Kuklewicz haskell at list.mightyreason.com
Sun Feb 5 15:41:38 EST 2006

Brian Hulley wrote:
> Ben Rudiak-Gould wrote:
>> Paul Hudak wrote:
>>> Minor point, perhaps, but I should mention that : is not special
>>> syntax -- it is a perfectly valid infix constructor.
>> > <snip>
>> ... but no more confusing than the fact that [f x | x <- xs] is
>> not the same as (map f xs).
> Can you explain why? On page 258 of Paul Hudak's book "The Haskell
> School of Expression" he states that do x<- xs; return (f x) is
> equivalent to [f x | x <- xs] "which is clearly just map f xs"
> I can't find anything wrong with the example in the book but perhaps
> I've missed something?

He may mean that if you *redefine* the operator Prelude.((:)) then the
desugaring and other steps may end up binding the old or the new (:) and no
longer be identical.  This is touched on in


In particular, if you redefine Monad, then [ f x | x<-xs ] and do {x<-xs; return
x} may no longer mean the same thing.

More information about the Haskell-Cafe mailing list