
2 Mar
2017
2 Mar
'17
10:18 a.m.
Hi Cafe, I offer to define the functions of the Control.Category module inlinable: -- | Right-to-left composition (<<<) :: Category cat => cat b c -> cat a b -> cat a c {-# INLINABLE (<<<) #-} (<<<) = (.) -- | Left-to-right composition (>>>) :: Category cat => cat a b -> cat b c -> cat a c {-# INLINABLE (>>>) #-} f >>> g = g . f Perhaps all functions from this module should be marked by this pragma as possible. I suppose that the current definition without the pragma is the cause why the execution slows down in my applications, when using monad parameters in the constraints. I noticed it yet two or three years ago, while playing with the monad transformers, but decided to write now. Best regards, David Sorokin