[Haskell-cafe] Why is it so different between 6.12.1 and 6.10.4_1 ?

David Menendez dave at zednenem.com
Fri Mar 26 21:03:03 EDT 2010


On Fri, Mar 26, 2010 at 8:59 PM, Ivan Lazar Miljenovic
<ivan.miljenovic at gmail.com> wrote:
> zaxis <z_axis at 163.com> writes:
>> In 6.10.4_1 under freebsd
>>> let f x y z = x + y + z
>> *Money> :t f
>> f :: (Num a) => a -> a -> a -> a
>>
>>> :t (>>=) . f
>> (>>=) . f  :: (Monad ((->) a), Num a) => a -> ((a -> a) -> a -> b) -> a -> b
>>> ((>>=) . f) 1 (\f x -> f x) 2
>>
>> <interactive>:1:1:
>>     No instance for (Monad ((->) a))
>>       arising from a use of `>>=' at <interactive>:1:1-5
>>     Possible fix: add an instance declaration for (Monad ((->) a))
>>     In the first argument of `(.)', namely `(>>=)'
>>     In the expression: ((>>=) . f) 1 (\ f x -> f x) 2
>>     In the definition of `it': it = ((>>=) . f) 1 (\ f x -> f x) 2
>>
>
> Some definitions and exports got changed, so in 6.12 the (-> a) Monad
> instance is exported whereas in 6.10 it isn't.

What? From where?

I thought the whole reason the Monad ((->) a) instance was in
Control.Monad.Instances (instead of Prelude) was to retain
compatibility with the library report.

-- 
Dave Menendez <dave at zednenem.com>
<http://www.eyrie.org/~zednenem/>


More information about the Haskell-Cafe mailing list