~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ DCF4F197B2873CF22BB50F36AB543F01__1705266960 ✰
Заголовок документа оригинал.:
✰ Epigram (programming language) - Wikipedia ✰
Заголовок документа перевод.:
✰ Эпиграмма (язык программирования) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Epigram_(programming_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/dc/01/dcf4f197b2873cf22bb50f36ab543f01.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/dc/01/dcf4f197b2873cf22bb50f36ab543f01__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 09:37:02 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 15 January 2024, at 00:16 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Эпиграмма (язык программирования) — Википедия Jump to content

Эпиграмма (язык программирования)

Из Википедии, бесплатной энциклопедии
Эпиграмма
Парадигма Функциональный
Разработано Конор МакБрайд
Джеймс МакКинна
Разработчик Неподдерживаемый
Впервые появился 2004 г .; 20 лет назад ( 2004 )
Стабильная версия
1 / 11 октября 2006 г .; 17 лет назад ( 11.10.2006 )
Дисциплина набора текста сильный , статичный , зависимый
ТЫ Кроссплатформенность : Linux , Windows , macOS.
Лицензия С [1]
Веб-сайт сеть .архив .org /веб /20120717070845 /http: //www .e-свинья .org /даркс /Pig09 /веб /
Под влиянием
Альф
Под влиянием
Agda , Idris

Epigram — это функциональный язык программирования с зависимыми типами и интегрированной средой разработки (IDE), обычно поставляемой вместе с языком. Epigram Система типов достаточно сильна, чтобы выражать спецификации программы . Целью является поддержка плавного перехода от обычного программирования к интегрированным программам и доказательствам, корректность которых может быть проверена и сертифицирована компилятором . Эпиграмма использует соответствие Карри-Ховарда , также называемое принципом предложений как типов , и основано на интуиционистской теории типов .

Прототип Epigram был реализован Конором МакБрайдом на основе совместной работы с Джеймсом МакКинной. Его развитие продолжают группы Epigram в Ноттингеме , Дареме , Сент-Эндрюсе и Ройял Холлоуэй, Лондонский университет в Соединенном Королевстве (Великобритания). Текущая экспериментальная реализация системы Epigram доступна бесплатно вместе с руководством пользователя, учебным пособием и некоторыми справочными материалами. Система использовалась под Linux , Windows и macOS .

В настоящее время он не поддерживается, а версия 2, предназначенная для реализации теории наблюдательных типов, никогда официально не выпускалась, но существует на GitHub .

Синтаксис [ править ]

Epigram использует двумерный, естественный синтаксис стиля дедукции с версиями в LaTeX и ASCII . Вот несколько примеров из Учебника по эпиграммам :

Примеры [ править ]

Натуральные числа [ править ]

Следующее объявление определяет натуральные числа :

(           !         (            !     (    n   :   Nat    ! 
 data   !---------!   где   !----------!   ;   !-----------! 
      !   Nat   :   *   )         !  ноль   :   Нэт  )     !  успех    :   Нэт  ) 

В декларации сказано, что Nat это тип с добрым характером * (т.е. это простой тип) и два конструктора: zero и suc. Конструктор suc занимает один Nat аргумент и возвращает Nat. Это эквивалентно объявлению Haskell " data Nat = Zero | Suc Nat".

В LaTeX код отображается так:

Обозначение горизонтальной линии можно прочитать как «предполагая, что (то, что вверху) истинно, мы можем сделать вывод, что (то, что внизу) истинно». Например, «предполагая n имеет тип Nat, затем suc n имеет тип Nat." Если сверху ничего нет, то нижнее утверждение всегда истинно: " zero имеет тип Nat (в любом случае)."

Рекурсия в натуральных числах [ править ]

... И в ASCII:

NatInd   :   все   P   :   Nat   ->   *   =>   P   ноль   -> 
          (  все   n   :   Nat   = >   P   n   ->   P   (  suc   n  )   -> 
          все   n   :   Nat   =>   P   n 
  NatInd   P   mz   мс   ноль   =>   mz 
  NatInd   P   mz   ms   (  suc   n  )   =>   ms   n   (  NatInd   P   mz   ms   n  ) 

Дополнение [ править ]

... И в ASCII:

плюс   x   y   <=   запись   x   { 
   plus   x   y   <=   case   x   { 
     плюс   ноль   y   =>   y 
      плюс   (  успех   x  )   y   =>   успех   (  плюс   x   y  ) 
   } 
 } 

Зависимые типы [ править ]

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

Полнозависимые типы, реализованные в Epigram, представляют собой мощную абстракцию. (В отличие от Dependent ML , зависимые значения могут иметь любой допустимый тип.) Пример новых возможностей формальной спецификации, которые предоставляют зависимые типы, можно найти в The Epigram Tutorial .

См. также [ править ]

  • ALF — помощник по доказательству среди предшественников Epigram.

Дальнейшее чтение [ править ]

  • Макбрайд, Конор; Маккинна, Джеймс (2004). «Взгляд слева» . Журнал функционального программирования . 14 : 69–111. дои : 10.1017/S0956796803004829 . S2CID   6232997 .
  • Макбрайд, Конор (2004). Прототип эпиграммы, кивок и два подмигивания (Отчет).
  • Макбрайд, Конор (2004). Учебник по эпиграмме (Отчет).
  • Альтенкирх, Торстен; Макбрайд, Конор; Маккинна, Джеймс (2005). Почему зависимые типы имеют значение (Отчет).
  • Чепмен, Джеймс; Альтенкирх, Торстен; Макбрайд, Конор (2006). Epigram Reloaded: автономная проверка типов для ETT (отчет).
  • Чепмен, Джеймс; Даганд, Пьер-Эварист; Макбрайд, Конор; Моррис, Питер (2010). Нежное искусство левитации (Репортаж).

Ссылки [ править ]

  1. ^ «Эпиграмма – Официальный сайт» . Проверено 28 ноября 2015 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: DCF4F197B2873CF22BB50F36AB543F01__1705266960
URL1:https://en.wikipedia.org/wiki/Epigram_(programming_language)
Заголовок, (Title) документа по адресу, URL1:
Epigram (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)