Re: Continuation Passing Style
"An Operational Semantics for I/O in a Lazy Functional Language"
Ну давай теперь рассказывай! А то книжки читать не охота, а поподробнее узнать охота...
"An Operational Semantics for I/O in a Lazy Functional Language"
А это точно про то? А то по названию показалось, что это про манады...
между различными подходами к в/в, в т.ч. CPS.
Про монады там нет.
В императивных языках это понятно как происходит, а в функциональных не очень.
По простому это вычисления функций без возврата. Т.е. вместо того, чтобы выполнять return мы вызываем так называемое continuation, которое нам передали в параметрах.Ох, ниибаца. Помню я несколько дней такое делал на perl и чуть с ума не сошел. Такой прикольный монстр вышел, сам факт его работы удивлял.
там CPS в чистом виде
(это я про версию 2)
довольно трудно прослеживать последовательность операций
В случае функционального языка у компилятора вроде вполне достаточно информации,
чтобы преобразовывать co-routines (которые как правило удобнее писать человеку) в CPS
(что удобнее исполнять компьютеру). А вот на практике этого как добиться?
"В сях" люди как правило треды вводят для этого дела, с соответствующим оверхедом.
Я не в курсе. Я пытаюсь пока понять, реализацию CPS на Haskell. Я скачал документ с объяснениями для Scheme, но я его не знаю и поэтому все равно не понятно.
Оставить комментарий
oleg_mcp
Нет ли у кого хороших статей/книг по этому делу? Лучше на примере функциональных языков, поскольку с императивными и так более-менее понятно.