Size: a a a

2021 May 03

JS

Jerzy Syrowiecki in Haskell
ReaderT + MonadReader чуть гибче, чем просто функции. и код красивее. и сообщения об ошибках понятнее
источник

AS

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

// Псевдокод
oldval = $global_var
try {
 $global_var = чему то
 do something...
} ensure {
 $global_var = oldvar
}

```
источник

AS

Alexander Smirnov in Haskell
Вот в хаскеле так писать неудобно
источник

AS

Alexander Smirnov in Haskell
А ридеры эту же самую задачу решают очень приятно
источник

AS

Alexander Smirnov in Haskell
Про сообщения об ошибках это ты закгнул, когда у тебя MonadReader на трансформерах и вылезает ошибка типа, она не выглядит простой
источник

Y

Yuuri in Haskell
А ImplicitParams — ещё приятнее!
источник

AS

Alexander Smirnov in Haskell
Но да, сами функции выглядят чище. Не знаю, в условном го, контекст спокойно передают как явный аргумент и не парятся
источник

AS

Alexander Smirnov in Haskell
Ридер нужен именно для того, чтобы абстрагироваться от того, что этот контекст вообще существует
источник

к

кана in Haskell
да, но с implicit params не получится tagless final абстракции накручивать, но если это не надо, то да, с имплиситами это намного приятнее чем с ридером
источник

AS

Alexander Smirnov in Haskell
implicit params это что то вроде dependency injection получается?
источник

DI

Dmitry Ivanov in Haskell
положить этот пул на топлевел и создать в unsafePerformIO - еще приятнее
источник

X

XÆA-XII in Haskell
o_o)
источник

JS

Jerzy Syrowiecki in Haskell
мне ошибки трансформеров субъективно понятнее, чем ошибки с функциями, потому что трансформеры хоть как-то рассортированы, а аргументы функций тупо позиционные. а ещё если забыть пару аргументов у функции в монаде, то компилятор думает, что это у тебя монада (->), и показывает совсем нерелевантную ошибку в нерелевантном месте
источник

[

[BRM]White Rabbit in Haskell
Ну, стрелка принадлежит инстансу MonadReader, так что чисто теоретически можно и через неё всё таскать
источник

[

[BRM]White Rabbit in Haskell
Только, как я понял, это больно получается
источник

AS

Alexander Smirnov in Haskell
Так то -> это и есть монада Reader
источник

JS

Jerzy Syrowiecki in Haskell
по сути — да, по юзабилити — нет
источник

AS

Alexander Smirnov in Haskell
Я про то, что сильной разницы в выводе типов не должно возникнуть
источник

JS

Jerzy Syrowiecki in Haskell
когда один аргумент — разница небольшая, а когда много параметров, то ведь хочется их отдельными аргументами в функцию передавать, а не структуркой?
источник

JS

Jerzy Syrowiecki in Haskell
что-нибудь прояснилось?
источник