[Haskell-beginners] Why the length function I wrote has such a type signature?

贾旭卿 amazingjxq at gmail.com
Thu Nov 11 03:24:44 EST 2010


This is exercise 3.1 of Real World Haskell. I have my length function like
this:

myLength [] = 0
myLength (_:xs) = 1 + (myLength xs)

And I assumed the type signature is like this:
mylength :: [a] -> Num

But when I wrote this into the file and reloaded it into ghci, there is an
error.

>     The type signature for `mylength' lacks an accompanying binding
> Failed, modules loaded: none.
>

And the type signature given by ghci is

> myLength :: (Num t1) => [t] -> t1
>

So how can I modify the function to have a type signature like the first
one?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20101111/b3aeb15e/attachment.html


More information about the Beginners mailing list