Size: a a a

2021 May 03

AS

Alexander Smirnov in Haskell
Обычно считается, что функция с большим количеством аргументов "smells"
источник

[

[BRM]White Rabbit in Haskell
type ConfigReader a = ReaderT Config IO a
источник

A

Aleksandr Khristenko in Haskell
Ну у нас все функции в цепочке должны будут в сигнатуре иметь ConfigReader
источник

[

[BRM]White Rabbit in Haskell
Пусть имеют
источник

A

Aleksandr Khristenko in Haskell
Ну вот это и получается явное таскание контекста, только через типы
источник

AS

Alexander Smirnov in Haskell
Для бизнес-логики можно собрать жирную-жирную монаду, назвать APP и не париться
источник

[

[BRM]White Rabbit in Haskell
Серьёзно, я с другом рефакторили вчера код, добавляя ридерТ везде, он заметно чище стал
источник

Y

Yuuri in Haskell
А ещё к когда этой пачке функций добавляется зависимость от этого конфига, приходится довольно много менять, чтобы в монадический контекст их все завернуть. С ImplicitParams это как-то прозрачнее и прямолинейнее делается.
источник

A

Aleksandr Khristenko in Haskell
Ну по сути разница только в том, что чуть меньше писать на терм левеле, не надо явно передавать/получать контекст. На тайплевеле все остается таким-же.
источник

Y

Yuuri in Haskell
Свободную!
источник

[

[BRM]White Rabbit in Haskell
И?
источник

AS

Alexander Smirnov in Haskell
Вот зачем нужны свободные монады я так и не разобрался
источник

[

[BRM]White Rabbit in Haskell
Главное достигнуто - мне писать меньше
источник

AS

Alexander Smirnov in Haskell
Завернуть все в StateT и писать процедурно на линзах
источник

AS

Alexander Smirnov in Haskell
Идеально
источник

[

[BRM]White Rabbit in Haskell
Да
источник

DB

Danil Berestov in Haskell
чтобы сначала их написать, а потом разбираться
источник

Y

Yuuri in Haskell
Так и делаем
источник

Y

Yuuri in Haskell
Чтобы выступать про них с докладами и написать книжку по дизайну
источник

AS

Alexander Smirnov in Haskell
Если честно, я думаю что это просто костыль скалистов для чего то, чего им не хватает
источник