| Reading on continuations |
[Apr. 8th, 2008|02:29 pm] |
1. Talk: Delimited Continuations in Computer Science and Linguistics Презентация О. Киселева и К. Шана, которая популярно объясняет значение терминов continuations, delimited continuations, и показывает, каким образом они относятся к операционным системам и лингвистике. Китайские иероглифы вместо привычных греческих букв смотрятся очень свежо.
2. An Analytical Approach to Programs as Data Objects Диссертация Olivier Danvy. Фундаментальная работа по теории языков программирования, рассматриваются вопросы семантики программ, трансформации программ, частичных вычислений, все изложение построено вокруг понятия "continuation". *
*Я ее еще не осилил, но выглядит как MUST READ. Как минимум, эпиграфы к каждой главе замечательные. |
|
|
| Монады и continuations (shift/reset part 1.5) |
[Nov. 21st, 2007|08:29 pm] |
In America, you execute a program. In Soviet Russia, a program executes you!
При реализации DSL часто нужна зависимость выражения от контекста. Нам часто требуется, чтобы что-то происходило за кулисами. Например, в комбинаторах парсеров состояние парсера — текущий фрагмент входной строки — передается неявно, и это удобно. ( дальше ) То же на РСДН, с обсуждением |
|
|
| shift/reset для самых маленьких, часть 1 |
[Oct. 28th, 2007|08:28 pm] |
Как оказалось, я задумал написать больше, чем способен в ближайшее время. Потому принято решение выкладывать текст по частям. Приступим:
Введение
Мы познакомимся с очень мощным и опасным инструментом управления ходом программы - delimited continuations, а точнее, с операторами shift/reset. Творческое применение shift/reset открывает куда большие возможности по запутыванию программ, чем могло бы сниться несчастному goto. Но с другой стороны, continuations можно применять и в мирных целях, причем в тех областях, где continuations действительно нужны, их очень трудно чем-либо заменить. В конце концов, о delimited continuations в последнее время довольно много пишут, потому любому, кто интересуется теоретической информатикой, полезно иметь представление об этом звере.
( читать дальше о континуациях и их аппликациях ) |
|
|
| хорошо быть буддой |
[Oct. 22nd, 2007|07:35 pm] |
| [ | Tags | | | continuations, lytdybr | ] |
| [ | Current Mood |
| | accomplished | ] |
| [ | Current Music |
| | I've Become The Nuclear Image Of Eternity. I'm The Original Stuff. | ] |
В неустанной борьбе с research papers, в стремлении понять наконец-то, о чем же пишет Олег Киселев и компания, достигнута важная веха: я понял, как работают операторы shift/reset, получил смутное представление о delimited (они же partial, composable, sub-) continuations вообще, и о том, что можно делать с их помощью. Например, как можно реализовать "зеленые" потоки, обмен сообщениями в духе Эрланга, Питоно-подобные генераторы и изменяемые переменные. Возможно, если соберусь с духом и кому-то будет интересно, напишу мини-туториал.
Update. Спасибо всем за проявленный интерес, попробую оправдать ожидания
Update 2. Товарищ верь, придет она. Я об обещаниях не забыл, план и примеры кода готовы, текст в процессе. |
|
|
| К вопросу об эффективности композиции |
[Jul. 6th, 2007|12:59 pm] |
Хотелось бы написать о чем-то возвышенном - например, о delimited continuations и инверсии парсеров, а еще раскритиковать трансформеры монад по ходу дела. Но, к сожалению, я пока мало в этом разбираюсь, потому напишу об обычных списках и функциях.
Как известно, добавлять элементы в конец списка в Haskell и других функциональных языках неэффективно. Поэтому, если эту операцию требуется делать в цикле, применяются различные трюки - накапливать в обратном порядке, а затем разворачивать, или более элегантно - ( представлять недостроенные списки в виде функций ) |
|
|