For sure, take your definition:
type wrap = Wrap : 'a -> wrap
In the graph of Set category, the constructor Wrap
is just the label of the arrow that maps any type to the terminal object wrap
. Up to isomorphism, your type wrap
could be replaced by unit
and the arrow is just the polymorphic function ignore
. The intuition is similar to the one I gave here with cone and co-cone for type base dynamic dispatch.