Россия |
Работа с Лисп-системой
Пошаговое вычисление
В системе имеется функция " STEP ", обеспечивающая пошаговую интерпретацию сложных выражений.
Унарная функция " STEP " выполняет пошаговую интерпретацию своего аргумента. Ее работа начинается с приглашения выбрать действие по управлению интерпретацией (см. таблицу):
[2]> (step (cons (car '(a . b)) 'd )) step 1 --> (CONS (CAR '(A . B)) 'D ) Step 1 [3]>
По действию "step" выбирается вычисление первого аргумента функции "CONS":
Step 1 [2]> (step (cons (car '(a . b)) 'd )) Step 1 --> (CONS (CAR '(A . B)) 'D ) Step 1 [3]> step Step 2 --> (CAR '(A . B)) Step 2 [4]>
Это же действие "step" теперь можно выбирать с помощью стрелки вверх:
Step 1 [2]> (step (cons (car '(a . b)) 'd))
Step 1 --> (CONS (CAR '(A . B)) 'D)
Step 1 [3]> step
Step 2 --> (CAR '(A . B))
Step 2 [4]> step7Этот "step" получен нажатием стрелки вверх
Step 3 --> '(A . B)
Step 3 [5]>
Теперь шаг за шагом смотрим как интерпретатор перебирает подвыражения и получает их значения:
(step (cons (car '(a . b)) 'd )) step 1 --> (CONS (CAR '(A . B)) 'D) Step 1 [15]> step step 2 --> (CAR '(A . B)) Step 2 [16]> step step 3 --> '(A . B) Step 3 [17]> step step 3 ==> value: (A . B) step 2 ==> value: A step 2 --> 'D Step 2 [18]> step step 2 ==> value: D step 1 ==> value: (A . D) (A . D) Step 1 [14]>
Сайты с Лисп-системами
Интернет-браузер на запрос "Lisp" даст многочисленные ссылки на сайты, среди которых можно найти следующее:
URL | Комментарий |
---|---|
http://www.intuit.ru/ | Сайт Интернет-Университета Информационных Технологий с большим числом дистанционных курсов по программированию |
http://lists.unixcenter.ru/archives/mlug/2000-August/000232.html | Материалы сравнения Си с Лиспом |
http://www.shareware-ownload.org/lisp.php | Бесплатные Lisp-системы. |
http://ru.wikipedia.org/wiki/LISP/ | Статья про Лисп в электронной энциклопедии. |
ftp://ftp.gnu.org/gnu/clisp/release/2.29/ | Сайт со свободно распространяемыми реализациями Clisp (clisp-2.29-win32.zip) |
http://www.cs.cmu.edu/~dst/Lisp/ | Сайт CMU |
http://penguin.kurgan.ru/doc/lisp.html | Про AutoLisp |
http://www.ystok.ru/index.html | Сайт фирмы, использующей Лисп в качестве базовой технологии |
http://www.marstu.mari.ru/mmlab/home/lisp/title.htm | Сайт Морозова с введением в программирование на Лиспе |
http://vspu.ac.ru/~lmiker/5im/rezn.htm | Сайт Микеровой с учебником по Лиспу |
Сайт Заочной школы программирования и Информационных технологий, включающий материалы по Лиспу |
Можно воспользоваться комплектом GNU Clisp.
Установка Лисп-системы
Установка системы GNU Clisp досаточно проста и описана в readme комплекта поставки:
GNU Common Lisp Для установки: В файлах *.bat поместить после "SET L=" наименование каталога, где установлен CLISP. Запуск: clisp - с русскими сообщениями clisp_en - с английскими сообщениями (в сеансе DOS под Windows 3.x или в среде DPMI, например, cwsdpmi.exe) L - запуск в среде без DPMI (можно запускать в любой среде DOS и Windows, но в Window 95 не будут работать многие файловые операции. Внимание! Вместо ввода команд ABORT, (BYE), (QUIT) и (EXIT) можно нажимать клавишу <Ctrl>+Z ("конец текстового файла").
Для GNU Clisp она сводится к копированию ряда файлов в директрию и соответствующему редактированию файла "clisp.bat", предназначенного для запуска Лисп-системы из директории, указанной переменной " L ".
@echo off SET L=C:\PROGRAMS\CLISP SET CLISP_LANGUAGE=ru %L%\lisp.exe -M %L%\lispinit.mem -x (print 'HELLO) %1
lisp.exe - базовый интерпретатор
lispinit.mem – база данных встроенных функций интерпретатора
Комплект поставки содержит документацию на английском языке и ряд примеров:
Clisp-m.txt – man-файл с описанием опций, которыми можно влиять на режим эксплуатации интерпретатора.
Xlispdoc.txt – справочник по встроенным функциям (от другой версии, но многое соответствует)
(Load 'file.lsp ) | Загрузка файла file.lsp, содержащего Лисп-программу |
(Apropos 'str ) | Выдать перечень атомов, в имена которых входит str |
(Describe 'Atom ) | Представить сведения о месте атома в системе |
(Dribble 'file.drb ) | Протокол вычислений направить в файл file.drb |
(Print expr ) | Напечатать результат вычисления expr |
(Read ) | Взять очередное выражение из входного потока |
(Step expr ) | Перейти к пошаговой интерпретации expr |