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
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-prime