I understand that newtype erases the type constructor at compile time as an optimization, so that newtype Foo = Foo !Int results in just an Int
newtype
newtype Foo = Foo !Int
Int