[Haskell-cafe] Type of (>>= f) where f :: a -> m b
Milind Patil
milind_patil at hotmail.com
Mon May 10 05:51:41 EDT 2010
For a function
f :: a -> m b
f = undefined
I am having trouble understanding how the type of
(>>= f)
is
(>>= f) :: m a -> m b
where, by definition, type of (>>=) is
(>>=) :: (Monad m) => m a -> (a -> m b) -> m b
I do not see how (>>= f) even unifies.
I mean if I code a function with the same type as (>>=) ie.
tt :: (Monad m) => m a -> (a -> m b) -> m b
tt = undefined
type of (tt f) does not infer to the same type as (>>= f), from ghc ...
(tt f) :: (Monad ((->) b)) => (m a -> b -> b1) -> b -> b1
There seems to something special about (>>=) apart from its type. And whats
(Monad ((->) b))? I am new to Haskell and I may have gaps in my understanding of
type inference in Haskell.
regards,
Milind Patil
More information about the Haskell-Cafe
mailing list