Гёдель (язык программирования) - Gödel (programming language)
Парадигма | декларативный, логика |
---|---|
Разработано | Джон Ллойд и Патриция Хилл |
Разработчик | Джон Ллойд и Патрисия Хилл |
Впервые появился | 1992 |
Стабильный выпуск | 1.5 / 11 августа 1995 г. |
Печатная дисциплина | сильный |
Операционные системы | 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 =внешняя ссылка