On 2015-03-08 12:11 PM, Eric wrote: > In some sense it's a canonical instance of Foo; we could trivially > write a universal > > > toFoo' :: Foo f => f -> Foo' > > function. Choose one: Foo' is a free Foo Foo' is a limit of the diagram of Foo Foo' is a terminal object of the [sub]category of Foo