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