ЛИСП
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: изложение с элементами сочинения, эффективность диплом
| Добавил(а) на сайт: Kirillov.
Предыдущая страница реферата | 18 19 20 21 22 23 24 25 26 27 28 | Следующая страница реферата
(stq who '((ferst john) (mid q) (last public))) тогда:
(setq old (assoc 'first who)) возвращает (FIRST JOHN)
(setq new '(first j)) возвращает (FIRST J)
(setq new old who) возвращает ((FIRST J) (MID Q) (LAST PUBLIC))
(type )
Эта функция возвращает TYPE (тип) , где TYPE - одно из следующих значений (как атом):
REAL числа с плавающей запятой
STR строковые константы
INT целые величины
SYM символы
LIST списки (и функции пользователя)
3. Расширение библиотеки функций dlisp.
Основные принципы программирования на dlisp те же, что и в MuLisp, при этом сохраняется и синтаксис MuLispа.
Никогда не используйте имена встроенных функций или символов для функций, определяемых вами, так как это сделает недоступными встроенные функции.
Пример расширения библиотеки функций dlispа содержится в файле rash.lsp. Для его запуска необходимо выполнить следующую последовательность команд:
MuLisp87.com Common.lsp
(load rash.lsp)
;File rash.lsp
;(Приложение к учебной версии языка Лисп dlisp).
;Содержит функции, расширяющие библиотеку dlisp Лиспа.
;Функция APPEND1 соединяет два списка в один
(defun append1 (l p)
(if (null l) p ;L пуст - вернуть P (условие окончания),
(cons (car l) ;иначе - создать список,
(append1 (cdr l) p)))) ;используя рекурсию.
;EQUAL1 - логическая идентичность объектов (параллельная рекурсия)
(defun equal1 (u v)
(cond ((null u) (null v)) ;возвращает T если U и V пустые
((numberp u) (if (numberp v) (= u v) ; проверка nil)) ;на идентичность
((numberp v) nil) ; чисел
((atom u) (if (atom v) (eq u v) ;сравнение атомов nil))
((atom v) nil)
(t (and (equal1 (car u) (car v)) ; идентичность "голов"
(equal1 (cdr u) (cdr v)))))) ;идентичность "хвостов"
;DELETE1 - удаляет элемент X из списка L
(defun delete1 (x l)
(cond ((null l) nil)
((equal1 (car l) x) (delete1 x (cdr l)))
(t (cons (car l) (delete1 x (cdr l)))))) ;ветвь выполняется
;в случае невыполнения предыдущих.
;FULLENGTH1 - определяет полную длину списка L (на всех уровнях)
(defun fullength1 (l)
(cond ((null l) 0) ;для пустого списка возвращается 0
((atom l) 1) ;если L является атомом - возвращается 1
(t (+ (fullength1 (car l)) ;подсчет в глубину
(fullength1 (cdr l)))))) ;подсчет в ширину
;DELETELIST1 - удаляет все элементы, входящие в список U из списка V
(defun deletelist1 (u v)
(cond ((null u) v)
(t (delete1 (car u)
(deletelist1 (cdr u) v)))))
;MEMBER1 - проверяет вхождение элемента U в список V на верхнем уровне
(defun member1 (u v)
(cond ((null v) nil)
((equal1 u (car v)) v)
(t (member1 u (cdr v)))))
;В случае присутствия S-выражения U в списке V функция возвращает остаток
списка V, начинающийся с U, в противном случае результатом вычисления
является NIL.
;INTERSECTION1 - вычисляет список общих элементов двух списков
(defun intersection1 (u v)
(cond ((null u) nil)
Рекомендуем скачать другие рефераты по теме: реферат личность, курсовая работа по менеджменту.
Категории:
Предыдущая страница реферата | 18 19 20 21 22 23 24 25 26 27 28 | Следующая страница реферата