Size: a a a

2021 December 02

[

[BRM]White Rabbit in Haskell Start
В ду-нотации, когда тебе нужен много где нужен какой-то env, который нигде не меняется
источник

[

[BRM]White Rabbit in Haskell Start
Ну, вернее, мы можем менять env для внутренних вызовов с помощью local
источник

[

[BRM]White Rabbit in Haskell Start
Я так делал интерпретатор лиспа - в ридере лежат все объявленные переменные, а при запуске лямбды мы через local изменяем окружение ридера на то, которое нужно этой самой лямбде для работы, т.е. захваченные ей переменные.
источник

[

[BRM]White Rabbit in Haskell Start
А по выходу из лямбды у нас снова старый env, даже делать ничего не надо - удобно!
источник

[

[BRM]White Rabbit in Haskell Start
Или вот ещё пример: я в ридере хранил полученный по сети конфиг с нужными значениями аля цвет, различные настройки, вкл/выкл опций
источник

Д

Дмитрий in Haskell Start
. для Reader?
источник

[

[BRM]White Rabbit in Haskell Start
Всм?
источник

Д

Дмитрий in Haskell Start
Ну как . для обычных функций
источник

DG

Denis Gabidullin in Haskell Start
Ну посиди, поугадывай! Почему ты решил, что должно быть легко помогать людям?)
источник

[

[BRM]White Rabbit in Haskell Start
Нет, как (&)
(&) :: a -> (a -> b) -> b
(>>=) :: Monad m => m a -> (a -> m b) -> m b
источник

Д

Дмитрий in Haskell Start
Вроде нормально спросил..
источник

Д

Дмитрий in Haskell Start
Спасибо, утром встану и еще раз перечитаю
источник

[

[BRM]White Rabbit in Haskell Start
. для "ридер" (на самом деле монад) это <=< (и его перевернутая версия >=>)
(.) :: (b -> c) -> (a -> b) -> a -> c
(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
источник

E

Elijah in Haskell Start
Мне помогло на листочке выписать как >>= и return определяется для (->) a и затем попробовать там же на листочке вывести (+2) >>= (*5)
источник

DG

Denis Gabidullin in Haskell Start
"там же на листочке вывести (+2) >>= (*5)"

Если не секрет, что вышло в итоге?)
источник

A

Aragaer in Haskell Start
что-то вроде \x -> (x + 2) * 5
источник

DG

Denis Gabidullin in Haskell Start
Вряд ли)
источник

A

Aragaer in Haskell Start
а, да, типы не сходятся
источник

A

Aragaer in Haskell Start
надо (+2) >>= (*)
источник

DG

Denis Gabidullin in Haskell Start
Зачем подсказываешь)
источник