Кіріспе

Функционалдық бағдарламалау тілі

Эпиграмма – тәуелді типтері бар функционалдық бағдарламалау тілі, сондай-ақ тілмен бірге әдетте жинақталатын интеграцияланған даму ортасы (IDE). Эпиграмманың типтік жүйесі бағдарламаның сипаттамаларын беруге жеткілікті. Мақсаты – қарапайым бағдарламалаудан интеграцияланған бағдарламалар мен дәлелдемелерге біртекті көшуді қолдау, олардың дұрыстығын компилятор тексеруге және сертификаттауға болады. Эпиграмма Curry-Howard сәйкестігін пайдаланады, сонымен қатар «ұйғарымдарды типтер принципі» деп атайды және интуиционистік типтер теориясына негізделген. Эпиграмманың прототипі Конор Макбрайд Джеймс МакКиннамен бірлескен жұмысының нәтижесінде жасалған. Оның дамуын Ноттингем, Дарем, Сент-Эндрюс және Лондон университетінің (Ұлыбритания) Корольдік Холлоуэйдегі Эпиграмма тобы жалғастыруда. Эпиграмма жүйесінің қазіргі тәжірибелік нұсқасы пайдаланушы нұсқаулығымен, оқулықпен және бірқатар анықтамалық материалдармен бірге тегін қолжетімді. Жүйе Linux, Windows және macOS жүйелерінде қолданылған. Қазіргі уақытта қолдау көрсетілмейді, ал Observational Type Theory-ді іске асыруға бағытталған 2-ші нұсқа ресми түрде жарияланбаған, бірақ GitHub-та бар.

Синтаксисі

Эпиграмма екі өлшемді, табиғи дедукция стиліндегі синтаксисті пайдаланады, LaTeX және ASCII нұсқалары бар. Мысалдарды «Эпиграмма оқулығынан» қарастырайық:

Табиғи заттарға қайталану

Және ASCII-де:

Қосу

Және ASCII-де:

Тәуелді типтер

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