Hello, I have seen from time to time the pipe symbol in type signatures, like so: class Monad m => MonadReader r m | m -> r where How should I interpret that ? Or more to the point, how does the compiler interpret it? Thanks, Emm