Рабочий процесс без REPL
- Отредактируйте файл
- Скомпилируйте файл, используя
compile-file
; исправить ошибки и предупреждения; повторение.
- Загрузите файл, используя
load
; оценить желаемую форму; повторение
Пример
$ cat > f.lisp <<EOF
(defun f (x) (if (zerop x) 1 (* (f (1- x)) x)))
EOF
$ clisp -q -norc -c f.lisp
;; Compiling file /home/sds/f.lisp ...
;; Wrote file /home/sds/f.fas
0 errors, 0 warnings
$ clisp -q -norc -i f.fas -x '(f 10)'
;; Loading file f.fas ...
;; Loaded file f.fas
3628800
$
Правильный путь
Используйте IDE, например Emacs со SLIME.
Таким образом, вы редактируете код в редакторе, который поддерживает автоматический отступ и показывает справку для каждого стандартного символа.
Вы компилируете и тестируете функции, как только пишете их, что дает вам очень короткий цикл разработки. Под капотом это достигается за счет взаимодействия IDE с REPL (это ответ на ваш последний вопрос).
Что такое РЕПЛ?
Цикл Read-Eval-Print — это более быстрая и универсальная версия цикла Edit-Compile-Run.
Вместо того, чтобы работать с целыми программами (которые могут быть медленными для компиляции и чье выполнение может быть утомительным, чтобы перейти к конкретному тестируемому месту), вы работаете с точки зрения конкретной функции, над которой вы работаете.
Например, в gdb
вы можете выполнить функцию с print my_func(123)
, но если вы измените my_func
, вам придется перекомпилировать файл и перелинковать весь исполняемый файл, а затем перезагрузить его в gdb
, а затем перезапустить процесс.
С REPL в стиле Lisp все, что вам нужно сделать, это повторно eval
(defun my-func ...)
, и вы можете сделать (my-func 123)
по подсказке.
person
sds
schedule
29.03.2013
compile-file
иload
Документацию: см. lispworks.com/documentation/HyperSpec/ Front/Contents.htm - person Terje D.   schedule 29.03.2013