Кіріспе

Типтелген ламбда-калькуль – анонимді функциялық абстракцияны белгілеу үшін ламбда символын пайдаланатын типтелген формализм. Бұл контексте типтер әдетте синтаксистік табиғаттағы объектілер болып табылады, олар ламбда термдеріне тағайындалады; типтің нақты табиғаты қарастырылып отырған калькульге байланысты (төмендегі түрлерді қараңыз). Бір тұрғыдан алғанда, типтелген ламбда калькульдерін типтелмеген ламбда калькульдің жетілдірілген түрі деп қарастыруға болады, бірақ екінші тұрғыдан алғанда, оларды негізгі теория деп санауға болады, ал типтелмеген ламбда калькуль – тек бір типті қамтитын ерекше жағдай. Типтелген ламбда калькульдері – негізгі бағдарламалау тілдері және ML және Haskell сияқты типтелген функционалдық бағдарламалау тілдерінің негізі болып табылады, сондай-ақ, жанама түрде типтелген императивті бағдарламалау тілдерінің дамуына әсер етеді. Типтелген ламбда калькульдері бағдарламалау тілдері үшін типтік жүйелерді жобалауда маңызды рөл атқарады; мұнда типтеу бағдарламаның қажетті қасиеттерін қамтиды (мысалы, бағдарлама жадқа рұқсатсыз қол жеткізуге себеп болмайды). Типтелген ламбда калькульдері Кьюри-Ховард изоморфизмі арқылы математикалық логика мен дәлелдеу теориясымен тығыз байланысты және оларды кейбір категориялар кластарының ішкі тілі деп қарастыруға болады. Мысалы, қарапайым типтелген ламбда калькуль Картезиандық жабық категориялардың (CCC) тілі болып табылады.

Типі бар ламбда калькулі түрлері

Түрлі типтелген ламбда калькульдері зерттелді. Қарапайым типтелген ламбдалық есептеуде тек бір типтік конструктор бар, яғни жебе, және оның типтері негізгі типтер мен функция типтері ғана. T жүйесі қарапайым типтелген ламбдалық есептеуді табиғи сандар және жоғары ретті примитивті рекурсиямен кеңейтеді; бұл жүйеде Пеано арифметикасында дәлелдеме арқылы рекурсивті болатын барлық функция анықталады. F жүйесі полиморфизмге барлық типтер бойынша әмбебап квантификацияны пайдалану арқылы мүмкіндік береді; логикалық тұрғыдан алғанда, ол екінші реттік логикада толық дәлелденген барлық функцияларды сипаттай алады. Тәуелді типтері бар ламбда калькульдері интуиционистік типтер теориясының, конструкциялар калькулының және логикалық базаның (LF) негізі болып табылады – бұл тәуелді типтері бар таза ламбда калькулы. Берардидің таза типтік жүйелердегі жұмысына сүйене отырып, Хенк Барендрегт таза типтелген ламбда калькульдерінің (оның ішінде қарапайым типтелген ламбда калькулі, F жүйесі, LF және конструкциялар калькулы) қатынастарын жүйелеу үшін Ламбда кубін ұсынды. Бұрын аталған жүйелердің барлығы, типтелмеген ламбда калькулінен басқа, күшті нормалдануға ие: барлық есептеулер аяқталады. Сондықтан олар барлық Тьюринг есептелетін функцияларын сипаттауға қабілетсіз. Сонымен қатар, олар логикалық тұрғыдан дұрыс, яғни, мәні жоқ типтер бар. Дегенмен, күшті нормалдануға ие емес типтелген ламбда калькульдері де бар. Мысалы, барлық типтердің типі бар тәуелді типтелген ламбдалық есептеу (Тип: Тип) Жирард парадоксының салдарынан нормалдана алмайды. Бұл жүйе сонымен қатар ең қарапайым таза типтік жүйе болып табылады, ол Ламбда кубін жалпылайтын формализм. Эксплицитті рекурсиялық комбинаторлары бар жүйелер, мысалы, Плоткиннің "Компьютерлік функциялар үшін бағдарламалау тілі" (PCF), нормалдана алмайды, бірақ олар логика ретінде интерпретациялануға арналмаған. Шындығында, PCF – прототиптік типтелген функционалдық бағдарламалау тілі, онда типтер бағдарламалардың дұрыс жұмыс істеуін қамтамасыз ету үшін қолданылады, бірақ міндетті түрде олардың аяқталуын емес.

Бағдарламалау тілдеріне қолдану

Компьютерлік бағдарламалауда, күшті типтелген бағдарламалау тілдерінің процедуралары (функциялары, процедуралары, методтары) типтелген лямбда-өрімдерге тікелей сәйкес келеді.