A research question
In Haskell we can statically force “structure” on values. An Int is
requried to support negate. But we can’t statically force
“properties” on values. We can’t, for example, require at compile
time two Ints to be equal.
Do these notions of “structure” and “properties” correspond to those for categories, explained in Stuff, structure, and properties? (Forget about the “stuff” for now). What, then, is the forgetful functor?