Стратегия редукции (лямбда-исчисление) - Reduction strategy (lambda calculus)

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

Обзор

Грубо говоря, стратегия сокращения - это функция, которая отображает терм лямбда-исчисления с приводимыми выражениями в одно конкретное приводимое выражение, которое будет сокращено следующим. Математические логики изучали свойства этой системы на протяжении десятилетий, и внешнее сходство между описанием стратегий оценки и стратегий сокращения первоначально привело к тому, что исследователи языков программирования предположили, что они идентичны, - убеждение, которое все еще просматривается в популярных учебниках с самого начала. 1980-е годы;[1] Однако это разные концепции.[нужна цитата ]

Плоткин[2] Однако в 1973 году показал, что правильная модель стратегии оценки требует формулировки новой аксиомы для вызовов функций, то есть совершенно нового исчисления. Он подтверждает эту идею двумя разными расчетами: одним для вызов по имени и еще один для вызов по стоимости, каждый для чисто функциональные языки программирования. Он также показывает, что такое исчисление удовлетворяет двум естественным критериям. Во-первых, исчисление определяет функцию оценки, которая отображает закрытые термины (представления программ) в ответы (представления результатов). Эта теорема основана на обычном Теорема Черча – Россера для модифицированного исчисления. Функция оценки определяется с помощью традиционной теоремы стандартизации Карри – Фейса. Во-вторых, исчисление - это надежная система рассуждений по уравнениям относительно Моррис понятие наблюдательной эквивалентности.[3]

Двадцать лет спустя Крэнк и Фелляйзен показали, как масштабировать работу Плоткина на языки с императивными операторами присваивания.[4] Они определяют исчисления для языка с переменными, функциями, приложением функции и оператором присваивания, которые охватывают традиционные понятия передачи параметров и стратегий оценки широкого спектра языков программирования. Они показывают, что каждое исчисление удовлетворяет критериям Плоткина, включая традиционные теоремы Черча – Россера и Карри – Фейса соответственно. Кроме того, они вводят исчисление, ML Понятие ссылочной ячейки.

Ариола и Фелляйзен[5] и независимо Мараист, Одерский и Вадлер [6] завершил эту работу разработкой лямбда-исчисления, которое точно связывает понятие по запросу также известный как ленивое функциональное программирование в системе вычислений по уравнениям. В отличие от исчислений вызова по значению и вызова по имени Плоткина, это исчисление вызова по необходимости требует четыре аксиомы для характеристики вызовов функций. Чанг и Фелляйзен[7] в конце концов смогли показать, как создать исчисление по необходимости с единственной, но сложной аксиомой.

Смотрите также

Рекомендации

  1. ^ Структура и интерпретация компьютерных программ Абельсоном и Сассманом, MIT Press, 1983
  2. ^ Вызов по имени, вызов по значению и лямбда-исчисление
  3. ^ «Языки программирования и лямбда-исчисление Джеймса Морриса, Массачусетский технологический институт, 1968»
  4. ^ Передача параметров и лямбда-исчисление Крэнка и Феллейзена, Принципы языков программирования, 1991 г.
  5. ^ Лямбда-исчисление по требованию Ариолы и Фелляйзена, Журнал функционального программирования, 1997 г.
  6. ^ Лямбда-исчисление по требованию, написанное Мараистом Одерски и Вадлером, Журнал функционального программирования, 1999 г.
  7. ^ Лямбда-исчисление по требованию, пересмотренное Чангом и Фелляйзеном, Европейский симпозиум по программированию, 2012 г.