Канал в PureScript не используется "в общем".Есть несколько вариантов его использования в зависимости от контекста.Один, как вы упомянули, предназначен для комбинаций строк типов.Другой - для функций защиты.
Конкретный синтаксис, который вы цитируете, называется «функциональная зависимость».Это свойство класса многопараметрического типа, и оно указывает, что некоторые переменные должны быть однозначно определены другими.
В данном конкретном случае синтаксис означает « для каждого m
, может быть только один w
».Или, проще говоря, данный m
не может быть MonadTell
для нескольких разных w
с.
Функциональные зависимости обнаруживаются во многих других местах.Например:
-- For every type `a` there is only one generic representation `rep`
class Generic a rep | a -> rep where
-- Every newtype `t` wraps only one unique inner type `a`
class Newtype t a | t -> a where