Что означает строка в определении класса? 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 () В чем смысл трубы выше? Отрывок из здесь. Ответ 1 Фактически, это " функциональная зависимость". В этом случае это означает, что m однозначно идентифицирует w - тип m определяет тип w. (Это может быть лучшей ссылкой.)
Ответ 1 Фактически, это " функциональная зависимость". В этом случае это означает, что m однозначно идентифицирует w - тип m определяет тип w. (Это может быть лучшей ссылкой.)