Okay, I made a test suite and as long as everything is type annotated it looks like this is compiling fine.
I also turned on a bunch of linting and warnings. If you would prefer I can turn them back off.
I see two ways forward from here:
1. Pick a compile target outside of Haskell. For instance LLVM or WASM are cool. We'll have to modify the category classes to suite doing this I think. I suspect there's a few other classes left to be made. In particular, I think we need something like `CategoryFix` with
fixC :: (y -> y) `k` y.
2. Move on to the automatic integration paper
Finally, there's a few more adjunction identities I can think of if you are still curious about that!