Size: a a a

2021 March 28

к

кана in Haskell
[BRM]White Rabbit
Меня Курт обманул
для IO там необычный инстанс, который альтернативит только по IOException
источник

к

кана in Haskell
то есть readFile "a" <|> readFile "b" выдаст первый существующий файл, но если там будет какой-то другой эксешпен, то упадет
источник

[

[BRM]White Rabbit in Haskell
Ага, понял. Но всё равно обман, инстанс жи есть
источник

[

[BRM]White Rabbit in Haskell
хоть иди и пиши в ДМК, мол "я тут спиратил вашу книжку и нашёл фактическую ошибку в придачу к десятку опечаток". Хотя по фактическим ошибкам по идее надо слать сразу в Нью-Йорк, хм.
источник

[

[BRM]White Rabbit in Haskell
А как использовать guard вне do-нотации? У него какой-то тип непонятный🙃
источник

к

кана in Haskell
> Just 1 *> guard True *> Just 2
Just 2
> Just 1 *> guard False *> Just 2
Nothing


для Maybe это по сути такая реализация
guard True = Just ()
guard False = Nothing
источник

к

кана in Haskell
мб ты смотришь не на тот guard

guard :: Alternative f => Bool -> f ()
источник

[

[BRM]White Rabbit in Haskell
да тот я смотрю😢
источник

к

кана in Haskell
тогда непонятно, что непонятно)
источник

O

Ortofax in Haskell
let filter_ p v = fmap (const v) (guard (p v))
Prelude Control.Monad> filter_ (>2) 3 :: Maybe Int
Just 3
Prelude Control.Monad> filter_ (>2) 2 :: Maybe Int
Nothing
источник

[

[BRM]White Rabbit in Haskell
кана
тогда непонятно, что непонятно)
нифига непонятно🙃
источник

к

кана in Haskell
vals >>= \val -> guard (test val) $> val
vals >>= \val -> guard (test val) *> pure val
vals >>= \val -> guard (test val) >>= \_ -> pure val
[val | val <- vals, test val]
источник

[

[BRM]White Rabbit in Haskell
ага, $> появиля
источник

O

Ortofax in Haskell
у аппликатива может быть поглощающий элемент. гвард как раз это и эксплуатирует, возвращая этот поглощающий элемент, если фолс, и pure (), если тру
источник

O

Ortofax in Haskell
это как иметь большое произведение чисел и в середину выражения засовывать ноль, если фолс, и единицу, если тру
источник

L

Lierdakil in Haskell
кана
vals >>= \val -> guard (test val) $> val
vals >>= \val -> guard (test val) *> pure val
vals >>= \val -> guard (test val) >>= \_ -> pure val
[val | val <- vals, test val]
Канонический-то вариант потерялся. vals >>= \val -> guard (test val) >> pure val
источник

к

кана in Haskell
>> не кононичный же, это вроде такое же легаси как и return
источник

к

кана in Haskell
вместо него вариант с *>
источник

L

Lierdakil in Haskell
Монады-то гхц дешугарит вроде по-старинке
источник

L

Lierdakil in Haskell
В смысле ду-нотацию для монад
источник