2009/10/12 Ketil Malde <[email protected]>: > > minh thu <[email protected]> writes: > >> ghci> :t (>>=) >> (>>=) :: (Monad m) => m a -> (a -> m b) -> m b >> >> This says that, you provide an a and you get a b. Nothing says the a and b >> have to be the same upon successive uses. > > (But note that the monad 'm' has to be the same all the way. You can't > switch from, say, IO to ST in the middle of the computation.) > >> Likewise, > > Contrariwise, I'd say. > >> ghci> :t (+) >> (+) :: (Num a) => a -> a -> a > > I.e. (+) requires the same type on both sides... > >> fromIntegral ((1 :: Int) + 2) + (3 :: Integer) >> 6 > > ...but 'fromIntegral' converts it. Did I miss some subtle point here?
I was talking about the types of the two + applications. They have a different types, just like the >>= in the parent's message can have different types. My fromIntegral has a role similar to the read s :: Int of the original question. Cheers, Thu _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
