How does this work?

> fac n = case n of
>    0 -> 1
>    _ -> n * fac (n-1)

ghci> :t fac
fac :: (Num t) => t -> t

The first line of "fac" pattern matches on 0.  So how does this work
over any value of the Num typeclass?  I know that the "1" on the rhs
of fac are replaced with (fromInteger 1), but what about numeric
literals in patterns?  Does it turn into a call to (==)?

Should whatever technique is used be extended to other typeclasses too?

  -- ryan
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to