On Mon, 2007-04-30 at 19:47 -0700, Iavor Diatchki wrote: > All of this leads me to think that perhaps we should not allow > strictness annotations on polymorphic fields. Would people find this > too restrictive?
Yes. Our current implementation of stream fusion relies on this: data Stream a = forall s. Unlifted s => Stream !(s -> Step a s) -- ^ a stepper function !s -- ^ an initial state We use strictness on polymorphic (class constrained) fields to simulate unlifted types. We pretend that the stream state types are all unlifted and have various strict/unlifted type constructors: data (Unlifted a, Unlifted b) => a :!: b = !a :!: !b instance (Unlifted a, Unlifted b) => Unlifted (a :!: b) where ... Duncan _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime