Подумалось мне про трансформеры монад, что если у нас есть натуральные преобразования из монад m и n в некую монаду l, то l - это их сумма, если добавить ещё и обратную функцию. Т.е. при наличии натурального преобразования m => t и n => t можем получить и m+n => t.
Попробовал я это представить прямо в таком виде:
data MonadSum m n a = MonadSum
(
Read more... )
Comments 14
Reply
Reply
Reply
lift : m => t -- натуральное преобразование
при этом, как я понимаю, должны выполняться:
return = lift . return
join . lift . map lift = lift . join
Ко мне можно на ты
Reply
Reply
Точно так же можно представить Either:
data Either a b = Either {
either :: forall c. (a -> c) -> (b -> c) -> c }
Или я несу чушь?
Reply
Это ты зря. На русском так никто не говорит.
Правильно - "естественные преобразования".
Reply
Reply
Leave a comment