
Achim Schneider wrote:
Peter Hercek
wrote: 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")])
Right, should be a list with one element in it to represent True. So maybe it is a bit worse than C since list with two elements gives you two True values :-D On the other side it is nice that guard works the expected way (using the same implementation) with other MonadPlus-es too.