insufficiently laziness@pattern -- more counterintuitive stuff
S. Alexander Jacobson
alex at alexjacobson.com
Tue Mar 30 10:30:27 EST 2004
I would assume that this function:
foo list@(h:t) = list
is equivalent to
foo list = list
But passing  to the first generates an error
even though h and t are never used! Passing  to
the second works just fine.
At this point, I sort of understand the reason for
MR and not having partially applied type synonyms,
but this seems entirely like an issue of syntactic
FYI, I encountered this issue attempting to write
code that merges the content of two lists of tuples e.g.
merge left@((xL,yL):restL) right@((xR,yR):restR)
| left== = ....
I imagine this issue is fairly common so perhaps
its another idiom issue.
PS This code is part of a joinSets function for data.Sets
S. Alexander Jacobson mailto:me at alexjacobson.com
More information about the Haskell