Size: a a a

2021 January 17

AP

Aleksei (astynax) Pi... in Haskell Start
StateT точно не нужен. "Просто функция" == Reader
источник

A

Aragaer in Haskell Start
ну так у меня и завернуто в newtype
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Завёрнут стек монад, который делает не то, что нужно и ненужно сложным способом
источник

A

Aragaer in Haskell Start
собственно я и отталкивался от того, что StateT World [] a это "почти то, что мне нужно", разница только в том, что я хочу отбрасывать дублирующиеся миры
источник

AP

Aleksei (astynax) Pi... in Haskell Start
"Почти то" — отсечка
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Трансформеры == ровно то, что нужно
источник

A

Aragaer in Haskell Start
хм. Ну и опять же мне удобно было внутри там использовать modify
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Мы видим ужасный инстанс непноятно что выигрывающий
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Для своей реализации modify может даже проще оказаться
источник

к

кана in Haskell Start
вообще вроде бы это будет незаконная монада

я не уверен, сделал вывод из того, что это вроде бы получается
StateT World (Uncurry (Flip Map)) a
~
World -> Map World a

а мапы и сеты это не монады
источник

A

Aragaer in Haskell Start
newtype Actions a = Actions{runActions::World -> [(a,World)]}

instance Monad Actions where
 (Actions xs) >>= k = Actions $ nubBy (sameWorld `on` snd) . runWorld
   where runWorld w = do
           (x, w') <- xs w
           runActions (k x) w'
           

что-то в таком духе?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Выглядит беззаконно. Советую проверить закон (a >>= b) >>= c == a >>= (b >>= c)
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Возможно даже функтор ломается уже
источник

A

Aragaer in Haskell Start
мм.. для произвольного k видимо будет незаконно, да. Но предполагаются такие k, чтобы ассоциативность выполнялась
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Э... зачем Monad тогда вообще?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Почему бы просто функции не композить?
источник

A

Aragaer in Haskell Start
чтобы писать в do-нотации?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Вот бы теперь удобством оправдывать беззаконность инстансов...
источник

к

кана in Haskell Start
ну я думаю, не страшно, это же какой-то собственный закрытый проект
источник

A

Aragaer in Haskell Start
тогда пойду с самого начала. Допустим у меня есть две функции a :: World -> World и b :: World -> World. Известно (мне), что a . b и b . a равны.
источник