[Haskell-cafe] RLE in Haskell: why does the type variable get instantiated?

Chris Eidhof chris at eidhof.nl
Tue Jul 31 05:38:43 EDT 2007


Hey Haskell-Cafe,

I was trying out the code in Dons's article [1], and I noticed a  
weird thing when doing it in GHCi. When binding the function  
composition to a variable, the type suddenly changes. I'm not  
completely sure why this happens. Is this because GHCi is in a monad  
and wants to find an instance for the type variable? Here's my GHCi  
session:

Prelude> :m +Control.Arrow
Prelude Control.Arrow> :m + List
Prelude Control.Arrow List> :t map (length &&& head) . group
map (length &&& head) . group :: (Eq a) => [a] -> [(Int, a)]
Prelude Control.Arrow List> let encode = map (length &&& head) . group
Prelude Control.Arrow List> :t encode
encode :: [Integer] -> [(Int, Integer)]

Thanks,
-chris

[1]: http://cgi.cse.unsw.edu.au/~dons/blog/2007/07/31


More information about the Haskell-Cafe mailing list