Программирование вычислимых функций - Programming Computable Functions

В Информатика, Программирование вычислимых функций ' (PCF) это напечатанный функциональный язык представлен Гордон Плоткин в 1977 г. на основании ранее неопубликованных материалов автора Дана Скотт.[примечание 1] Его можно рассматривать как расширенную версию типизированное лямбда-исчисление или упрощенная версия современных типизированных функциональных языков, таких как ML или же Haskell.

А полностью абстрактный модель для ПКФ была впервые дана Milner (1977). Однако, поскольку модель Милнера была по существу основана на синтаксисе PCF, она считалась менее чем удовлетворительной (Ong, 1995). Первые две полностью абстрактные модели, не использующие синтаксис, были сформулированы в 1990-х годах. Эти модели основаны на семантика игры (Hyland and Ong, 2000; Abramsky, Jagadeesan, and Malacaria, 2000) и Крипке логические отношения (О'Хирн и Рике, 1995). Какое-то время считалось, что ни одна из этих моделей не была полностью удовлетворительной, поскольку они не были эффективно презентабельны. Тем не мение, Ральф Лоадер продемонстрировали, что не может существовать эффективно представимой полностью абстрактной модели, поскольку вопрос об эквивалентности программ в конечном фрагменте PCF не разрешим.

Синтаксис

В типы ПКФ индуктивно определяются как

  • нац это тип
  • Для типов σ и τ, есть тип στ

А контекст это список пар х: σ, куда Икс это имя переменной и σ - это тип, поэтому имя переменной не дублируется. Затем определяют типизацию суждений терминов в контексте обычным способом для следующих синтаксических конструкций:

  • Переменные (если х: σ является частью контекста Γ, тогда ΓИкс : σ)
  • Заявление (срока вида στ к сроку типа σ)
  • λ-абстракция
  • В Y комбинатор с фиксированной точкой (составляя термины типа σ вне терминов типа σσ)
  • Преемник (succ) и предшественник (пред) операции на нац и постоянная 0
  • Условный если с правилом набора текста:
(нацs здесь будет интерпретироваться как логическое значение с условием, что ноль обозначает истину, а любое другое число обозначает ложность)

Семантика

Денотационная семантика

Относительно простой семантикой для языка является Модель Скотта. В этой модели

  • Типы интерпретируются как определенные домены.
    • (натуральные числа с присоединенным нижним элементом, с плоским порядком)
    • интерпретируется как область Скотт-непрерывный функции от к , с точечным порядком.
  • Контекст интерпретируется как продукт
  • Термины в контексте интерпретируются как непрерывные функции

Эта модель не является полностью абстрактной для ПКФ; но это полностью абстрактно для языка, полученного добавлением параллельно или оператор в PCF (стр. 293 в ссылке Hyland and Ong 2000 ниже).

Примечания

  1. ^ «PCF - это язык программирования для вычислимых функций, основанный на LCF, логике вычислимых функций Скотта» (Плоткин 1977 ). Программирование вычислимых функций используется (Митчелл 1996 ). Его также называют Программирование с помощью вычислимых функций или же Язык программирования для вычислимых функций.

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

внешняя ссылка