[Haskell-cafe] bottomless Top?

Conor McBride conor at strictlypositive.org
Thu May 15 07:29:48 EDT 2008

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.



More information about the Haskell-Cafe mailing list