[Haskell-beginners] Question about constraints, signatures

Philippe Sismondi psismondi at arqux.com
Fri May 6 17:34:47 CEST 2011


I am trying to understand the Typeclassopedia article by Brent Yorgey in Monad.Reader. I am simultaneously working my way through Real World Haskell, so I may be doing things a bit out of order.

Here is my question (which may itself be unclear, as I am a true *noob* at this):

Why are there two different kinds of "constraints" in a signature, viz. those that specify types and those that specify typeclasses?  For instance, we could write this:

f :: (Num d) => d -> String -> Int

In my example above there are two kinds of things that constrain f: 

(a) d must be an instance of Num; and
(b) the second argument to f must be of type String, and f must return an Int.

I (more or less) understand that types and typeclasses are not the same. But it seems to me that they do conflate in a way, if we think of types as defined by functions on them. So why should we not be able to write:

f ::  Num d -> String -> Int

TIA.

Best,

- Phil -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110506/37ff7665/attachment.htm>


More information about the Beginners mailing list