Size: a a a

2020 November 19

AP

Aleksei (astynax) Pi... in fprog_spb
Writer всего лишь даёт возможность вернуть вместе с результатом вычисления какую-то накопленную информацию.

Информация копится лениво. Программист об этом помнит.

Есть варианты Writer, которые могут копить энергично. Выбирается вариант под задачу. Всё как у всех
источник

K

Kakadu in fprog_spb
Я знаю, просто говорю, что можно сделать и по-другому
источник

AP

Aleksei (astynax) Pi... in fprog_spb
Можно.
источник

AP

Aleksei (astynax) Pi... in fprog_spb
Можно в IORef класть агрегат, например. Да, будет везде IO, но зато эффективно
источник

AP

Aleksei (astynax) Pi... in fprog_spb
И программисту нужно выбрать то, что ему подходит.
источник

K

Kir in fprog_spb
Ещё можно взять систему эффектов. Правда, пока delimited continuations не помержены, они будут неэффективны.
источник

AP

Aleksei (astynax) Pi... in fprog_spb
Я не перестаю удивляться тому, что люди такому — необходимости выбора — удивляются
источник

AP

Aleksei (astynax) Pi... in fprog_spb
Writer хорош тем, что он по построению может только писать, причём не заменой, а дописыванием. Это немаленькая такая гарантия.
источник

K

Kir in fprog_spb
Aleksei (astynax) Pirogov
Writer хорош тем, что он по построению может только писать, причём не заменой, а дописыванием. Это немаленькая такая гарантия.
А всякие listen?
источник

AP

Aleksei (astynax) Pi... in fprog_spb
Они явные
источник

AP

Aleksei (astynax) Pi... in fprog_spb
И нельзя зацензорить то, что было записано ранее. Можно только на подвычисления влиять
источник

AP

Aleksei (astynax) Pi... in fprog_spb
То же касается Reader — можно подменить окружение для вложенного кода, но нельзя оставить изменённым на выходе
источник

K

Kakadu in fprog_spb
Если что, я предлагал сделать буферизующийся writer так же, как у Окасаки splay trees сделаны
источник

K

Kakadu in fprog_spb
Это имеет какой-то смысл?
источник

K

Kir in fprog_spb
Технически, ContT ... ReaderT` может работать наподобие `StateT
источник

AP

Aleksei (astynax) Pi... in fprog_spb
Kakadu
Если что, я предлагал сделать буферизующийся writer так же, как у Окасаки splay trees сделаны
Это можно порешать самим моноидом при наличии энергичного Writer
источник

K

Kir in fprog_spb
Kakadu
Если что, я предлагал сделать буферизующийся writer так же, как у Окасаки splay trees сделаны
Нужен строгий Writer тогда
источник

K

Kakadu in fprog_spb
Да, может быть
источник

AP

Aleksei (astynax) Pi... in fprog_spb
Ну вот Writer на CPS подойдёт
источник

AP

Aleksei (astynax) Pi... in fprog_spb
Тут как с Text VS Text.Lazy. Если писать в них, можно получить разные характеристики. Искоробочный ленивый Writer плох только тем, что ленив даже с энергичным агрегатом. Хорошо, что теперь можно выбрать энергичный Writer и использовать с ленивым агрегатом :)
источник