:: y -> Either b z
h :: z -> Either a z'
хочу максимально не мерзким образом получить что-то в духе h . g . f , чтобы в итоге был Either a z'
через функторы не получается потому что Either a и Either b это разные типы, а через бифункторы получается что-то в духе Either a (Either b z) что тоже не очень вкусно
Можно ли как-то лаконично one-liner'ом это разрешить?
А что должно происходить есть g вернет Left (_ :: b)?
в теории хотелось бы вернуть специально подготовленное для этого фиксированное значение типа a , но и Left memtpy покатит (Monoid a имеет место быть в данном случае)
Обсуждают сегодня