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