
In head'', what is being compared to Nil? The guards of a function are a series of Boolean expressions; but in your example they are of type ConsCell a. The difference is that in a pattern, the structure of the argument is matched; in a guard, an arbitrary expression is evaluated. I have always found the Haskell report instructive in these cases; particularly the transformations into the core language -- in this case see section 4.4.3.2 (http://haskell.org/onlinereport/decls.html#sect4.4.3.2); this should make it clear why head'' is not valid Haskell. cheers, Fraser. Guards are really a series of Boolean equations, and the first that evaluates to true On Jan 9, 2008 7:15 PM, Fernando Rodriguez < frr149@easyjob.net> wrote:
Hi,
I have the following type and function:
data ConsCell a = Nil | Cons a (ConsCell a) deriving Show head' Nil = Nothing head' (Cons a _) = Just a
Works fine, however, what's wrong with the following function?
head'' | Nil = Nothing | Cons a _ = Just a
Thanks!
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe