- InteLib
-
InteLib Тип Разработчик Андрей Викт. Столяров
Написана на Операционная система Unix-подобные, Microsoft Windows
Последняя версия Лицензия Сайт InteLib — это библиотека классов C++, моделирующая вычислительную модель языка Лисп и предоставляющая набор операций, позволяющих описывать S-выражения Лиспа с помощью синтаксически близких арифметических выражений в рамках C++. Библиотека создана в качестве инструмента мультипарадигмального программирования.
Содержание
Принципы
Библиотека предоставляет объектно-ориентированную модель гетерогенных S-выражений, снабжённую операцией вычисления S-выражения в терминах Лиспа. Классы, составляющие модель, снабжены переопределёнными инфиксными операциями, позволяющими записывать S-выражения в виде зрительно близких к ним арифметических выражений языка C++. Так, в нескольких статьях, посвящённых InteLib, приводится пример функции на Лиспе:
(defun isomorphic (tree1 tree2) (cond ((atom tree1) (atom tree2)) ((atom tree2) NIL) (t (and (isomorphic (car tree1) (car tree2)) (isomorphic (cdr tree1) (cdr tree2)) ))))
Средствами InteLib этот фрагмент кода можно записать в виде следующего выражения C++:
(L|DEFUN, ISOMORPHIC, (L|TREE1, TREE2), (L|COND, (L|(L|ATOM, TREE1), (L|ATOM, TREE2)), (L|(L|ATOM, TREE2), NIL), (L|T, (L|AND, (L|ISOMORPHIC, (L|CAR, TREE1), (L|CAR, TREE2)), (L|ISOMORPHIC, (L|CDR, TREE1), (L|CDR, TREE2)) ))))
Здесь
L
— это переменная типаLListConstructor
, введённая ради операцииL|
, которая конструирует список из одного элемента. Результатом операции является объект классаLReference
, для которого переопределена операция «запятая» — в библиотеке InteLib эта операция служит для добавления новых элементов к имеющемуся списку.Результатом всего выражения также является объект класса
LReference
. МетодEvaluate()
, описанный в этом классе, позволяет вычислить выражение в соответствии с правилами языка Лисп. Результатом такого вычисления будет новое S-выражение, представленное, как всегда, объектом классаLReference
.DEFUN
,ISOMORPHIC
,TREE1
и др. в вышеприведённом примере являются переменными классаLSymbol
, который представляет понятие символа Лиспа.Возможности
Текущая версия InteLib включает набор средств для работы с S-выражениями как гетерогенными структурами данных (без вычисления), а также вычислительные модели языков Лисп и Scheme (точнее говоря, диалектов InteLib Lisp и InteLib Scheme, которые не соответствуют стандартам этих языков). В комплект поставки входят интерактивные интерпретаторы обоих диалектов, а также трансляторы, принимающие на вход модуль в традиционном синтаксисе Лиспа или Scheme и создающие модуль на C++, снабжённый заголовочным файлом.
История
Первая работающая версия библиотеки была написана А. Столяровым в ходе выполнения магистерской квалификационной работы на факультете ВМиК МГУ в 1999 году.
Библиотека InteLib впервые официально упоминается в статье А. Столярова и Е. Большаковой Building functional techniques into an object-oriented language[1], представленной на конференции JCKBSE'2000 в Брно в сентябре 2000 года.
В 2002 году состоялась защита кандидатской диссертации А. Столярова Интеграция разнородных языковых механизмов в рамках одного языка программирования, в которой представлен метод непосредственной интеграции, реализованный в библиотеке InteLib.
Как сказано на официальном сайте InteLib, название библиотеки происходит от слов Intelligence Library, что отражает исходное намерение автора интегрировать в проекты C++ вычислительные модели языков искусственного интеллекта.
Лицензирование
Библиотека InteLib является свободным программным обеспечением. Сама библиотека распространяется по лицензии LGPL, сопутствующие трансляторы и интерпретаторы — по лицензии GPL.
Ссылки
Примечания
- ↑ E. Bolshakova and A. Stolyarov. Building functional techniques into an object-oriented system. In Knowledge-Based Software Engineering. Proceedings of the 4th JCKBSE, volume~62 of Frontiers in Artificial Intelligence and Applications, pages 101--106, Brno, Czech Republic, September 2000. IOS Press, Amsterdam. ISBN 1-58603-060-4 ; http://www.croco.net/croco/papers/bolshakova_stolyarov_2000.ps
Категории:- Программное обеспечение по алфавиту
- Библиотеки C++
- Функциональное программирование
- Свободные библиотеки программ
Wikimedia Foundation. 2010.