| Монады и 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 в последнее время довольно много пишут, потому любому, кто интересуется теоретической информатикой, полезно иметь представление об этом звере.
( читать дальше о континуациях и их аппликациях ) |
|
|