I'd like to move this from primitive-unlifted into this primitive:
class PrimUnlifted a where
type Unlifted a :: UnliftedType
toUnlifted# :: a -> Unlifted a
fromUnlifted# :: Unlifted a -> a
instance PrimUnlifted (Array a) where
type Unlifted (Array a) = Array# a
toUnlifted# (Array a) = a
fromUnlifted# x = Array x
instance PrimUnlifted (MutableArray s a) where
type Unlifted (MutableArray s a) = MutableArray# s a
toUnlifted# (MutableArray a) = a
fromUnlifted# x = MutableArray x
instance PrimUnlifted (SmallArray a) where
type Unlifted (SmallArray a) = SmallArray# a
toUnlifted# (SmallArray a) = a
fromUnlifted# x = SmallArray x
instance PrimUnlifted (SmallMutableArray s a) where
type Unlifted (SmallMutableArray s a) = SmallMutableArray# s a
toUnlifted# (SmallMutableArray a) = a
fromUnlifted# x = SmallMutableArray x
instance PrimUnlifted (PrimArray a) where
type Unlifted (PrimArray a) = ByteArray#
toUnlifted# (PrimArray x) = x
fromUnlifted# x = PrimArray x
instance PrimUnlifted ByteArray where
type Unlifted ByteArray = ByteArray#
toUnlifted# (ByteArray x) = x
fromUnlifted# x = ByteArray x
I'd have to give up on the ShortText and ShortByteString instances since primitive is not going to pick up bytestring or text-short as a dependency. Having this typeclass would let us have a much more useful implementation of touch and keepAlive. Any implementation of these targeting a lifted wrapper is dangerous and misleading to the user. Unfortunately, that's basically the only thing we would get from doing this. All the other stuff using this class needs to stay in primitive-unlifted for at least a while longer since the backwards-compatibility story for it is rather bad. I do think that PrimUnlifted is stable at this point though.
Any thoughts on this?
I'd like to move this from
primitive-unliftedinto thisprimitive:I'd have to give up on the
ShortTextandShortByteStringinstances sinceprimitiveis not going to pick upbytestringortext-shortas a dependency. Having this typeclass would let us have a much more useful implementation oftouchandkeepAlive. Any implementation of these targeting a lifted wrapper is dangerous and misleading to the user. Unfortunately, that's basically the only thing we would get from doing this. All the other stuff using this class needs to stay inprimitive-unliftedfor at least a while longer since the backwards-compatibility story for it is rather bad. I do think thatPrimUnliftedis stable at this point though.Any thoughts on this?