Polymorphic strict fields
Duncan Coutts
duncan.coutts at worc.ox.ac.uk
Tue May 1 06:54:36 EDT 2007
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
More information about the Haskell-prime
mailing list