Size: a a a

2021 May 18

¯

¯\_(ツ)_/¯ in Haskell
так что если little-endian, то Generic не поможет
источник

С

Сергей in Haskell
а cereal?
источник

С

Сергей in Haskell
а может от машины зависит? может на little endian будет little endian
источник

¯

¯\_(ツ)_/¯ in Haskell
источник

DM

Dmitriy Mozhevitin in Haskell
Господа, подскажите пожалуйста: имеется
f :: x -> Either a y
g :: 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'ом это разрешить?
источник

С

Сергей in Haskell
h =<< g =<< f x
источник

к

кана in Haskell
не сработает
источник

С

Сергей in Haskell
а, точно
источник

DM

Dmitriy Mozhevitin in Haskell
да, по той же причине по которой не работает функтор
источник

к

кана in Haskell
можно во первых в Maybe забыть, раз ошибка не важна
источник

к

кана in Haskell
во вторых можно патмачем просто
источник

IO

I O in Haskell
А что должно происходить есть g вернет Left (_ :: b)?
источник

к

кана in Haskell
q :: x -> Maybe z'
q x | Right y <- f x, Right z <- g y, Right z' <- h z = Just z'
q _ = Nothing
источник

к

кана in Haskell
еще линзами просто будет
источник

DM

Dmitriy Mozhevitin in Haskell
в теории хотелось бы вернуть специально подготовленное для этого фиксированное значение типа a , но и Left memtpy покатит (Monoid a имеет место быть в данном случае)
источник

к

кана in Haskell
q :: x -> Maybe z'
q = firstOf (to f . _Right . to g . _Right . to h . _Right)
источник

DM

Dmitriy Mozhevitin in Haskell
благодарю
источник

IO

I O in Haskell
f >=> g >>> first (const def) >=> h если я нигде не ошибся, где def - то, чем заменить b. Если def = mempty можно const mempty заменить на просто mempty
источник

DM

Dmitriy Mozhevitin in Haskell
:pogchamp:
источник

DM

Dmitriy Mozhevitin in Haskell
*ушел читать про Control.Arrow*
источник