| CODE THAT PRODUCES THE ERROR | | module Foo where | | import MutableArray | import ByteArray | import ST | import PrelArrExtra | | class Foo t where | | foo :: t -> ByteArray ix | | instance Ix ix => Foo (forall s. MutableByteArray s ix) where | | foo x = runST(unsafeFreezeByteArray x) No, it's not legal to have a for-all type in the argument of a type constructor like that! Foo (forall s. stuff) is Not Kosher But it's a compiler bug that it's not caught more gracefully. -fglasgow-exts is too liberal! Thanks for reporting it. Simon