Equality test operations are not levity polymorphic
Summary
We currently have
sameArray# :: Array# a -> Array# a -> Int#
sameMutableArray# :: MutableArray# s a -> MutableArray# s a -> Int#
sameSmallArray# :: SmallArray# a -> SmallArray# a -> Int#
sameSmallMutableArray# :: SmallMutableArray# s a -> SmallMutableArray# s a -> Int#
sameMutVar# :: MutVar# s a -> MutVar# s a -> Int#
sameTVar# :: TVar# s a -> TVar# s a -> Int#
sameMVar# :: MVar# s a -> MVar# s a -> Int#
sameIOPort# :: IOPort# s a -> IOPort# s a -> Int#
eqStableName# :: StableName# a -> StableName# b -> Int#
That's very odd. Surely we should have, for example,
sameArray# :: forall {l :: Levity} (a :: TYPE ('BoxedRep l)). Array# a -> Array# a -> Int#
Environment
- GHC version used: 9.6
Optional:
- Operating System:
- System Architecture: