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?