[ghc-steering-committee] Proposal UnliftedArray#: recommend acceptance

Simon Marlow marlowsd at gmail.com
Tue May 8 16:16:35 UTC 2018


UnliftedArray# has been proposed by Andrew Martin:
https://github.com/ghc-proposals/ghc-proposals/pull/112

In a nutshell, the proposal is to add new primitive types UnliftedArray#
and MutableUnliftedArray#

data UnliftedArray# :: TYPE 'UnliftedRep -> TYPE 'UnliftedRep
data MutableUnliftedArray# :: TYPE 'LiftedRep -> TYPE 'UnliftedRep -> TYPE
'UnliftedRep

with the appropriate set of primops, e.g.

indexUnliftedArray# :: forall (a :: TYPE 'UnliftedRep). UnliftedArray# a ->
Int# -> a

This makes complete sense and it is what we would have done from the start,
except that we only recently gained the ability to talk about type
variables that range over unlifted types.

UnliftedArray# subsumes some existing rather ugly sets of primops that were
added because we lacked the ability to define the more general version,
like ArrayArray# And ByteArrayArray#, also including the hilarious

indexArrayArrayArray# :: ArrayArray# -> Int# -> ArrayArray#

All of this can be defined in terms of the general UnliftedArray#. (the
migration will be easier if we can use UnliftedNewtypes to define
ArrayArray# in terms of UnliftedArray#, otherwise we have to keep the
original versions in the compiler, but I don't think the exact mechanism
matters all that much for the purposes of accepting or rejecting the
proposal).

Incidentally we might also want UnliftedMutVar#, UnliftedMVar#,
UnliftedTVar#, and maybe UnliftedStablePtr# but that's for another proposal.

I propose that we accept this. Any objections?

Cheers
Simon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20180508/a3698ade/attachment.html>


More information about the ghc-steering-committee mailing list