I thought I understand monomorphism restriction. But it seems, I don't. I
have boilt down my problem to the following test. Don't try to make any
sense of it, it is just the smallest code I could come up with.


test :: (Integral a, RealFrac a) => a
test =
   let c = undefined
   in  asTypeOf (round c) c


When compiling I get:

Compiling StorableInstance ( src/StorableInstance.hs, interpreted )

src/StorableInstance.hs:38:17:
    Warning: Defaulting the following constraint(s) to type `Double'
             `RealFrac a' arising from use of `round' at 
src/StorableInstance.hs:38:17-21
             In the first argument of `asTypeOf', namely `(round c)'
             In the definition of `test1': test1 = let c = undefined in 
asTypeOf (round c) c
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to