
On Thursday 11 November 2010 09:24:44, 贾旭卿 wrote:
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.
That's because you mistyped the function name in the type signature, the funcion has an uppercase L, the signature got a lowercase l. Without that typo, you'd have gotten an error: Class `Num' used as a type In the type signature for `myLength': myLength :: [a] -> Num which would probably have helped.
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?
Jedaï answered that.