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

Reply via email to