class (Monoid w, Monad m) => MonadWriter w m | m -> w where pass :: m (a,w -> w) -> m a listen :: m a -> m (a,w) tell :: w -> m ()
Что означает труба выше? Фрагмент взят из здесь .
На самом деле, это " функциональная зависимость ". В этом случае это означает, что m однозначно идентифицирует w - тип m определяет тип w. ( Это может быть лучшей ссылкой.)
m
w