Вчерась у меня случилась смешная вещь. Метод должен вернуть список, который строится внутри транзакции. Я стал использовать гугловский transform, а этот трансформ возвращает ленивый список, который будет вычисляться только если начнёшь перечислять. Ну понятное дело к тому времени транзакция закрыта, и все дела.
Ну что, решение, конечно, состоит в том, чтобы материализовать список прямо внутри транзакции, путём добавления его всего к другому, ранее пустому списку.
Но по сути-то речь идёт о коммутировании монад. Стейт-монада, выраженная в виде "действий под транзакцией" и монада списка должны как бы поменяться местами. Т.е. нужон монадный трансформатор, говоря по-хаскельски.
И сдаётся мне вообще, что если глядеть на вещи с монадной точки зрения, то суть понятней становится.
Но почему-то монады в производство толкают считанные люди. Ну Зефиров. Ну Грегори Мередит. И всё? И в вузах не учат ни хрена. Взять того же Шалыто. :)
Ну что, решение, конечно, состоит в том, чтобы материализовать список прямо внутри транзакции, путём добавления его всего к другому, ранее пустому списку.
Но по сути-то речь идёт о коммутировании монад. Стейт-монада, выраженная в виде "действий под транзакцией" и монада списка должны как бы поменяться местами. Т.е. нужон монадный трансформатор, говоря по-хаскельски.
И сдаётся мне вообще, что если глядеть на вещи с монадной точки зрения, то суть понятней становится.
Но почему-то монады в производство толкают считанные люди. Ну Зефиров. Ну Грегори Мередит. И всё? И в вузах не учат ни хрена. Взять того же Шалыто. :)