[Haskell-beginners] Typeclasses vs. Data
Antoine Latter
aslatter at gmail.com
Thu Jul 21 14:04:54 CEST 2011
On Jul 21, 2011 5:28 AM, "Thomas" <haskell at phirho.com> wrote:
>
> Hi Felipe, David!
>
> It works!!! :-)
>
> What I do not really understand, however, is the difference between
>
> eval_begin n k = eval n (if (n< 0) then k else (BeginCont k (n - 1)))
> and
>
> eval_begin n k = if (n< 0) then eval n k else eval n (BeginCont k (n -
1))
>
The difference comes down to two things:
1. The type of 'if'. The haskell 'if ... then ... else ...' is conceptually
just a function with the type (Bool -> a -> a -> a). The two branches must
be of the same type.
2. In the code:
> f (if p then a else b)
If somehow the 'if' could type-check with 'a' and 'b' being of different
types, the compiler wouldn't know which type to pick for 'f'. In Haskell,
we're not allowed to delay type-checking until run-time - the compiler
demands that it can solve everything before running any of it.
I hope I haven't confused things even more!
Antoine
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110721/358299c8/attachment.htm>
More information about the Beginners
mailing list