`ConstPtr`'s name is misleading. Along with missing `T const *`type
Motivation
ConstPtr's name has tripped me up many times, ConstPtr's name seems like it should be a T * const in C while in reality it's a const T *.
Proposal
With this issue I propose repurposing ConstPtr to be T * const instead and adding Const or some similar named type to fill the role of const T. Along with this we can remove GHC treating const pointers and normal pointers as interchangeable because they're not.
Edited by Lemon