Skip to content

:type does not print the correct kinds for levity-polymorphic primops

> :set -fprint-explicit-foralls -fprint-explicit-runtime-reps -fprint-explicit-kinds
> :type mkWeak#
mkWeak#
  :: forall a b c.
     a
     -> b
     -> (State# RealWorld -> (# State# RealWorld, c #))
     -> State# RealWorld
     -> (# State# RealWorld, Weak# b #)

This is incorrect as mkWeak is now levity-polymorphic in the variable a. I thought this might be due to the primop wrappers we create for GHCi, yet I am still allowed to write:

> :kind Array# Int
Array# Int :: UnliftedType
= Array# Int
> :type mkWeak# (undefined :: Array# Int)
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information