I have to say, I'm getting more and more frustrated by the bad code I have to write due to bad business circumstances.
I want clean, readable code with proper documentation and at least a bit of internal consistency and not the shoehorned mess of hacks, todos and weird corner cases.
Don't just put "TODO". If they're in the final pull request, they need to mention a ticket that's intended to fix that TODO. If you/your team decides it's not important, then remove it and close out the ticket. Either way, you're required to do something with it.
Doesn't that construction only work in categories that also contain their own morphisms as objects since a profunctor maps (Cᵒᵖ × C) → Set and not the same like (Cᵒᵖ × C) → C? Since the category of Haskell types special, containing its own morphisms, so the profunctor could be like (haskᵒᵖ × hask) -> hask? or I just don't understand it.
Hom functors exist for locally small categories, which is just to say that the hom classes are sets. The distinction can be ignored often because local smallness is a trivial consequence of how the category is defined, but it's not generally true
What I hate is when I read a paper and it assumes that I know half of the math already, so there's variables I don't understand that I have to guess at.
But this isn't exactly what you asked for, so I'll try to help you get it as best I can with my limited understanding of the subject. First of all it would be helpful to know what your prior knowledge in Maths, especially Set theory, is?