Replying slap-foreheadedly to own post...

On 15 May 2008, at 11:56, Conor McBride wrote:

Folks

I'm also wondering whether it makes sense to have a
"bottomless Top" type, with constructor _ and lazy pattern _
(with (undefined :: Top) equal to _). Then the constant-time
shape operator makes the same sort of sense as the
constant-time

  inflate :: Functor f => f Zero -> f a

We've got it already.

data One

would do, with smart constructor

only :: One
only = undefined

and no other operations, so no way to be strict in its values.
It's the lazy version of Zero. Assuming (safely?) that
representation of data in each instance of a type constructor
is uniform, that means

  shape :: Functor f => f a -> f One
  shape = unsafeCoerce

should be ok, right? The question about the GC implications
of that move still stands, though.

Cheers

Conor

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to