When Haskell runs it's type checker, it tries to "guess" the type of each function. Thats why you can write:

   map (+1)

and it knows that you're talking about a function of type:

   Num a => [a] -> [a]

Another thing, called 'defaulting' resolves this, but you didn't ask about that, so I won't go into it.

An expected type is one that you provide to the compiler in the form of a type signature, this can be used to specialize a general type (like the one I showed) or to resolve ambiguous types the compiler can't, or just for documentation/good practice. So when I write:

   foo :: Num a => [a] -> [a]
   foo ls = map (+1) ls

The "expected type" for `foo` is `Num a => [a] -> [a]`. I imagine you're asking this because you got an error which said your expected type doesn't match your inferred type. That might, for instance, happen if I wrote:

   bar :: String
   bar = 'a'

'a' has type `Char`, since `String` is not `Char`, the type checker infers that 'a' has type char, but _expects_ it to be type String. Two solutions are as follows:

   --- Method 1
   bar :: Char
   bar = 'a'
   --- Method 2
   bar :: String
   bar = "a"

Can you see why those two changes fix the problem?


Also, just as a matter of process, I forwarded this to the haskell-beginners list, as I imagine type errors like these come up a lot, and someone probably has a better explanation over there.

/Joe


michael rice wrote:
as opposed to an "inferred type"?

Michael


------------------------------------------------------------------------

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
begin:vcard
fn:Joseph Fredette
n:Fredette;Joseph
adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America
email;internet:jfred...@gmail.com
tel;home:1-508-966-9889
tel;cell:1-508-254-9901
x-mozilla-html:FALSE
url:lowlymath.net, humbuggery.net
version:2.1
end:vcard

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to