WikiDer > Типизированное лямбда-исчисление
эта статья нужны дополнительные цитаты для проверка. (Март 2015 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
А напечатанный лямбда-исчисление это типизированный формализм использующий лямбда-символ () для обозначения абстракции анонимной функции. В этом контексте типы обычно являются объектами синтаксического характера, которые присваиваются лямбда-терминам; точная природа типа зависит от рассматриваемого исчисления (см. виды ниже). С определенной точки зрения типизированные лямбда-исчисления можно рассматривать как уточнения нетипизированное лямбда-исчисление, но с другой точки зрения их также можно считать более фундаментальной теорией и нетипизированное лямбда-исчисление особый случай только с одним типом.
Типизированные лямбда-исчисления являются основополагающими языки программирования и являются базой типизированных функциональные языки программирования такие как ML и Haskell и, более косвенно, набрал императивные языки программирования. Типизированные лямбда-исчисления играют важную роль в разработке системы типов для языков программирования; здесь типизируемость обычно фиксирует желаемые свойства программы (например, программа не вызовет нарушения доступа к памяти).
Типизированные лямбда-исчисления тесно связаны с математическая логика и теория доказательств через Изоморфизм Карри – Ховарда и их можно рассматривать как внутренний язык классов категории; например, просто типизированное лямбда-исчисление это язык Декартовы закрытые категории (CCC).
Виды типизированных лямбда-исчислений
Изучены различные типизированные лямбда-исчисления. В просто типизированное лямбда-исчисление есть только один конструктор типов, Стрелка , и его единственные типы основные типы и типы функций . Система T расширяет просто типизированное лямбда-исчисление типом натуральных чисел и примитивной рекурсией более высокого порядка; в этой системе все функции доказуемо рекурсивны в Арифметика Пеано определены. Система F допускает полиморфизм, используя универсальную количественную оценку по всем типам; с логической точки зрения он может описать все функции, которые доказуемо логика второго порядка. Лямбда-исчисления с зависимые типы являются основой интуиционистская теория типов, то расчет конструкций и логическая структура (LF), чистое лямбда-исчисление с зависимыми типами. На основе работы Берарди над системы чистого типа, Хенк Барендрегт предложил Лямбда-куб систематизировать отношения чисто типизированных лямбда-исчислений (включая просто типизированное лямбда-исчисление, системы F, LF и исчисление конструкций).[нужна цитата]
Некоторые типизированные лямбда-исчисления вводят понятие подтип, т.е. если это подтип , то все термины типа также есть тип . Типизированные лямбда-исчисления с подтипами - это просто типизированные лямбда-исчисления с конъюнктивными типами и Система F<:.
Все упомянутые до сих пор системы, за исключением нетипизированного лямбда-исчисления, являются сильно нормализующий: все вычисления прекращаются. Следовательно, они не могут описать все Вычислимый по Тьюрингу функции.[1] Как еще одно следствие, они логически последовательны, то есть существуют необитаемые типы. Однако существуют типизированные лямбда-исчисления, которые не являются строго нормализующими. Например, лямбда-исчисление с зависимым типом с типом всех типов (Тип: Тип) не нормализуется из-за Парадокс Жирара. Эта система также является простейшей системой чистых типов, формализмом, обобщающим лямбда-куб. Системы с явными комбинаторами рекурсии, такие как Плоткина "Язык программирования для вычислимых функций"(PCF), не являются нормализующими, но они не предназначены для интерпретации как логика. Действительно, PCF - это прототипный типизированный функциональный язык программирования, в котором типы используются для обеспечения правильного поведения программ, но не обязательно, чтобы они прекращаются.
Приложения к языкам программирования
В компьютерное программирование, подпрограммы (функции, процедуры, методы) строго типизированные языки программирования близко соответствуют типизированным лямбда-выражениям.
Смотрите также
- Исчисление каппа- аналог типизированного лямбда-исчисления, исключающий функции высшего порядка
Заметки
- ^ так как проблема остановки для последнего класса оказалось неразрешимый
дальнейшее чтение
- Барендрегт, Хенк (1992). «Лямбда-исчисления с типами». В Абрамском, С. (ред.). Фон: вычислительные структуры. Справочник по логике в компьютерных науках. 2. Издательство Оксфордского университета. С. 117–309. ISBN 9780198537618.