Гёдель (язык программирования) - Gödel (programming language)

Гёдель
Парадигмадекларативный, логика
РазработаноДжон Ллойд и Патриция Хилл
РазработчикДжон Ллойд и Патрисия Хилл
Впервые появился1992
Стабильный выпуск
1.5 / 11 августа 1995 г. (1995-08-11)
Печатная дисциплинасильный
Операционные системыUnix-подобный
ЛицензияТолько для некоммерческих исследований / образовательных целей
Диалекты
Гедель с универсальными (параметризованными) модулями

Гёдель это декларативный, общее назначение язык программирования который придерживается логика парадигма программирования. Это строго типизированный язык, система типов основана на разносторонняя логика с параметрический полиморфизм. Назван в честь логика Курт Гёдель.

Функции

У Gödel есть модульная система, и она поддерживает произвольная точность целые числа, рациональные числа произвольной точности, а также числа с плавающей запятой. Это может решить ограничения над конечными областями целых чисел, а также линейными рациональными ограничениями. Он поддерживает обработку конечные множества. Он также имеет гибкое правило вычислений и оператор отсечения, который обобщает фиксацию языков параллельного логического программирования.

Гёделя мета-логический средства обеспечивают поддержку метапрограмм, выполняющих анализ, трансформация, компиляция, проверка и отладка, среди других задач.

Образец кода

Следующий модуль Гёделя является спецификацией наибольшего общего делителя (НОД) двух чисел. Он призван продемонстрировать декларативный характер Гёделя, а не быть особенно эффективным. CommonDivisor предикат говорит, что если я и j не равны нулю, тогда d является общим делителем я и j если он находится между 1 и меньший из я и j и делит оба я и j точно. Gcd предикат говорит, что d является наибольшим общим делителем я и j если это общий делитель я и j, и нет е это также общий делитель я и j и больше чем d.

МОДУЛЬ GCD.IMPORT Целые числа. PREDICATE Gcd: Integer * Integer * Integer.Gcd (i, j, d) <- CommonDivisor (i, j, d) & ~ SOME [e] (CommonDivisor (i, j, e) & e> d). PREDICATE CommonDivisor: Integer * Integer * Integer.CommonDivisor (i, j, d) <- IF (i = 0  / j = 0) THEN d = Max (Abs (i), Abs (j)) ELSE 1 = 

внешняя ссылка