Новосибирский Государственный Университет
Опубликован: 05.02.2007 | Доступ: свободный | Студентов: 2222 / 413 | Оценка: 4.30 / 4.23 | Длительность: 10:15:00
Лекция 2:

Работа с Лисп-системой

< Лекция 1 || Лекция 2: 12 || Лекция 3 >

Пошаговое вычисление

В системе имеется функция " STEP ", обеспечивающая пошаговую интерпретацию сложных выражений.

Унарная функция " STEP " выполняет пошаговую интерпретацию своего аргумента. Ее работа начинается с приглашения выбрать действие по управлению интерпретацией (см. таблицу):

[2]> (step (cons (car '(a . b)) 'd ))
step 1 --> (CONS (CAR '(A . B)) 'D )
Step 1 [3]>
Таблица 2.1. Первоочередные средства управления пошаговой интерпретацией символьных выражений. (Можно пользоваться сокращенными обозначениями из 2-ой колонки.)
COMMAND ABBR DESCRIPTION
КОМАНДА СОКР. ОПИСАНИЕ
Help :h (or ?) this command list
Полный список команд
Error :e Print the recent Error Message
Вывод последнего сообщения об ошибке
Continue :c continue evaluation
Продолжение вычислений
Step :s step into form: evaluate this form in single step mode
Продвижение к внутреннему подвыражению
Next :n step over form: evaluate this form at once
Вычисление данной формы сразу, полностью

По действию "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" даст многочисленные ссылки на сайты, среди которых можно найти следующее:

Таблица 2.1. Адреса, выданные IE через Yandex в начале июля 2006 года
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 – справочник по встроенным функциям (от другой версии, но многое соответствует)

Таблица 2.2. Clisp: Связь с внешним миром
(Load 'file.lsp ) Загрузка файла file.lsp, содержащего Лисп-программу
(Apropos 'str ) Выдать перечень атомов, в имена которых входит str
(Describe 'Atom ) Представить сведения о месте атома в системе
(Dribble 'file.drb ) Протокол вычислений направить в файл file.drb
(Print expr ) Напечатать результат вычисления expr
(Read ) Взять очередное выражение из входного потока
(Step expr ) Перейти к пошаговой интерпретации expr
< Лекция 1 || Лекция 2: 12 || Лекция 3 >