Эшер (язык программирования)
Парадигма | декларативный : функциональный , логический |
---|---|
Разработано | Дж. В. Ллойд |
Впервые появился | один-1990-е |
Дисциплина набора текста | статический , манифест |
Основные реализации | |
Реализация Ки Сионг Нг | |
Под влиянием | |
простая теория типов |
Escher (названный в честь М. К. Эшера , «мастера бесконечных циклов») — это язык декларативного программирования , поддерживающий модели функционального и логического программирования , разработанный Дж. У. Ллойдом в середине 1990-х годов. Он был разработан в основном как исследовательский и обучающий инструмент. Основной взгляд на программирование, представленный Эшером и родственными языками, заключается в том, что программа — это представление теории в некоторой логической структуре , а выполнение программы (вычисление) — это вывод из теории. Логической основой Эшера является Алонзо Чёрча простая теория типов .
Эшер, в частности, поддерживает ввод-вывод через монадический тип, представляющий «внешний мир», в стиле Haskell . Одной из целей разработчиков Эшера была поддержка метапрограммирования , поэтому язык имеет комплексную поддержку генерации и преобразования программ.
Примеры
[ редактировать ]MODULE Lambda.
CONSTRUCT Person/0.
FUNCTION Jane, Mary, John: One -> Person.
FUNCTION Mother : Person * Person -> Boolean.
Mother(x,y) =>
x=Jane & y=Mary.
FUNCTION Wife : Person * Person -> Boolean.
Wife(x,y) =>
x=John & y=Jane.
FUNCTION PrimitiveRel : (Person * Person -> Boolean) -> Boolean.
PrimitiveRel(r) =>
r=Mother \/ r=Wife.
FUNCTION Rel : (Person * Person -> Boolean) -> Boolean.
Rel(r) =>
PrimitiveRel(r) \/
(SOME [r1,r2]
(r = LAMBDA [u] (SOME [z] (r1(Fst(u),z) & r2(z,Snd(u)))) &
PrimitiveRel(r1) & PrimitiveRel(r2))).
Ссылки
[ редактировать ]- Декларативное программирование по Эшеру , Дж. У. Ллойд, Бристольский университет, Бристоль, Великобритания, 1995 г.
- Реализация Эшера (к некоторым мертвым ссылкам можно получить доступ с заархивированной страницы (или путем замены нового домена в рассматриваемой ссылке).)