Unlifted primop types
David Feuer
david.feuer at gmail.com
Wed Aug 22 13:59:06 UTC 2018
The problem is that this also accepts things that aren't pointers at all!
We could fix that *for primops* by changing RuntimeRep to something like
data RuntimeRep
= PtrRep Liftedness
| ...
But that would only work for primops (at least for now) so it may not be
worth the breakage.
On Wed, Aug 22, 2018, 7:45 AM Ben Gamari <ben at smart-cactus.org> wrote:
> Simon Peyton Jones <simonpj at microsoft.com> writes:
>
> > | Huh! It looks like what we currently do for some primops is just use a
> > | totally bogus kind. For example, mkWeak# will happily accept an Int#
> as
> > | its first argument.
> >
> > Well, I see
> > primop MkWeakOp "mkWeak#" GenPrimOp
> > o -> b -> (State# RealWorld -> (# State# RealWorld, c #))
> >
> > and I believe (from Ben's message) that the "o" means "open type
> variable",
> > which is the old terminology for what we now call levity-polymorphic.
> >
> Right; currently (largely for historical reasons) we use `o` to
> accommodate cases that accept both lifted and unlifted pointers.
>
> Cheers,
>
> - Ben
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20180822/631d8c22/attachment.html>
More information about the ghc-devs
mailing list