Средства разработки приложений



              

Базовые принципы языка Scheme - часть 3


Энергичная семантика вычислений языка Scheme отличается от ленивой семантики языка Haskell и от семантики передачи значения по имени языка Algol 60. В этих языках выражение, определяющее значение аргумента, не вычисляется до тех пор, пока это значение не будет востребовано при вычислении функции.

В соответствии со спецификацией, реализация языка Scheme обязана выполнять хвостовые вызовы без использования дополнительной памяти. Эффективная обработка хвостовых вызовов имеет очень большое значение, поскольку при написании программ в функциональном стиле итерационные вычисления, выражаемые в императивных языках через циклические операторы, записываются через рекурсивные функции. В том случае, если рекурсивные вызовы являются хвостовыми, разработчик может не опасаться за выход за пределы доступной приложению памяти. Хвостовые вызовы и их эффективное выполнение подробно рассматриваются в нашей статье ниже.

Помимо функций, в языке Scheme статус значений первого класса также получили остаточные вычисления (continuations), обработка которых в большинстве языков программирования осуществляется неявно. Механизм остаточных вычислений позволяет реализовывать многие управляющие конструкции, например, обработку исключительных ситуаций. Далее в этой статье мы будем уделять особое внимание остаточным вычислениям и принципам их поддержке в языке Scheme, поскольку эффективная поддержка механизма остаточных вычислений является одной из наиболее сложных задач реализации Scheme.


Содержание  Назад  Вперед