Thiemann.-.Continuation-based.Partial.Evaluation.without.Continuations.(2003).djvu


Subject: Thiemann.-.Continuation-based.Partial.Evaluation.without.Continuations.(2003).djvu
From: Sergei Romanenko (roman@integrum.ru)
Date: Tue Jun 15 2004 - 15:03:31 MSD


Привет!

Что-то Тиман уж больно плодовит... Такое впечатление, что он превратился в
специалиста "по всем наукам" в области специализации программ. И как бы
начал занимать то место, которое занимал Нил Джоунс. (Наверное. "Johnes" =
"Джонс", а "Jones" = "Джоунс"?)

Вот одно из сочинений Тимана:

ed2k://|file|[Functional.Programming,.Partial.Evaluation].Thiemann.-.Continu
ation-based.Partial.Evaluation.without.Continuations.(2003).djvu|103318|EB94
1AD4E67E2BEBE12941A8C433CF33|/

Название, конечно, пропагандистское. На самом деле речь идет о том, что
вместо того, чтобы использовать продолжения в явном виде, Тиман предлагает
использовать монады в качестве "фигового листка". При этом, естественно,
существует преобразование, которое элиминирует монады из программы, в
результате чего как раз и получается программа, которая использует
продолжения.

На первый взгляд имеем просто переливание из пустого в порожнее... Однако,
все же, есть в этом большой смысл. Здесь дело обстоит примерно так же, как и
с заменой goto на "структуризованные" конструкции (if, while, и т.п.).
Понятно, что goto - это могучее средство, которое позволяет "творить
чудеса", но в этом же и его недостаток.

Точно так же, явная работа с продолжениями тоже позволяет "творить чудеса",
но это средство - слишком могучее, и из-за этого при неупорядоченной работе
с продолжениями в специализаторе слишком легко попасть в "вольчью яму".
Ошибки, допущенные при работе с продолжениями - весьма неочевидны... А ведь
при написании специализатора "рука может дрогнуть" в любой момент.

А усилия по улучшению структуры специализатора позволяют сделать его более
понятным (а значит - повысит вероятность его корректного написания).

Сергей Романенко



This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:25:01 MSD