LINUX.ORG.RU

[lisp sbcl] Ругается на defvar. Нид хелп.


0

0

Изучаю лисп по книге practical common lisp. Проблема в том, что компилятор (SLIME->Compilation->Compile/Load File) ругаеся на следующий код:

(defvar db nil)

(defun add-record (cd)
  (push cd db)
  )

(defun make-cd (title artist rating ripped)
  (list :title title :artist artist :rating rating :ripped ripped)
  )

(defun dump-db ()
  (dolist (cd db)
    (format t "~{~a:~10t~a~%~}~%" cd))
  )

(defun promt-for-cd()
  (make-cd
   (promt-read "Title")
   (promt-read "Artist")
   (or (parse-integer (promt-read "Rating") :junk-allowed t) 0)
   (y-or-n-p(promt-read "Ripped [y/n]"))
   )
  )
Сообщение об ошибке:
-+  Errors (1)
 `-- SB-INT:SIMPLE-READER-ERROR at 13 (line 1, column 13) on #<SB-SYS:FD-STREAM for "file /home/nikitad/LISP/01.lisp" {10036D6AC1}>:
       illegal terminating character after a colon: #\ 
Если defvar сделать интерактивно - то все работает. Версии софта, если нужно:
nikitad@desktop001 ~ $ qlist -Iv emacs lisp
app-admin/emacs-updater-1.3
app-admin/eselect-emacs-1.8
app-editors/emacs-22.3-r1
app-emacs/autoconf-mode-2.63
app-emacs/color-browser-0.3-r1
app-emacs/color-theme-6.6.0
app-emacs/mmm-mode-0.4.8-r1
app-emacs/po-mode-0.17
app-emacs/quack-0.30
app-emacs/ruby-mode-1.9.1_pre1
app-emacs/scheme-complete-0.8.1
app-emacs/slime-2.0_p20080731
dev-lisp/cl-asdf-1.89
dev-lisp/cl-asdf-binary-locations-20061018
dev-lisp/common-lisp-controller-5.13-r1
dev-lisp/gentoo-init-0.1
dev-lisp/sbcl-1.0.19
virtual/emacs-22
x11-misc/emacs-desktop-0.3
nikitad@desktop001 ~ $ uname -a
Linux desktop001 2.6.28-gentoo-r1 #1 SMP PREEMPT Sat Jan 31 02:24:37 MSK 2009 x86_64 Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz GenuineIntel GNU/Linux
Решительно не понимаю, что он от меня хочет и прошу помощи у гуру.

anonymous

Не понимаю тоже. На всякий случай, имя файла - /home/nikitad/LISP/01.lisp?

Как этот файл попал сюда, в форум? Может быть, есть какие-то символы, которые не печатаются в EMACS? Попробуй посмотреть в hex режиме в Total Commander или я ещё не знаю как можно посмотреть на это.

den73

anonymous
()

очень похоже на то что в файл попали левый символы:
BOM или виндовое окончание строки.
потому что код корректный, за исключением необъявленной
функции promt-read.

раз гентушник, то должен был сначала попробовать запустить
из консоли:
$ sbcl
* (compile-file "path-to-file")

h1t
()
Ответ на: комментарий от h1t

Кажется, понял в чем дело: если открыть файл в vim - то появляются левые символы:

Content-Type: text/enriched
Text-Width: 70

(<x-color><param>Purple</param>defvar</x-color> <x-color><param>DarkGoldenrod</param>*db*</x-color> nil)

(<x-color><param>Purple</param>defun</x-color> <x-color><param>Blue1</param>add-record</x-color> (cd)
,,,

Соответственно он ругается на двоеточие в первой строке.
Вопрос тогда: как сделать так, чтобы он его компилировал без емаксовской разукрашки/плужебной инфы? чтобы был чисто текст?

anonymous
()
Ответ на: комментарий от anonymous

не наезжай на емакс.
вся эта хрень в файле не имеет к нему никакого отношения

просто скопируй содержимое буфера твоего исходного файла в новый файл
с расширением lisp
и убедись что содержимое нового файла не меняетя при переключении
режимов:
M-x fundamental-mode RET
M-x lisp-mode RET

h1t
()
Ответ на: комментарий от h1t

При переключении режимов содержимое файла менятеся.

При fundamental mode - все как надо, только напечатанный мною код.

При lisp-mode - см. выше, всякая левая инфа.

anonymous
()
Ответ на: комментарий от anonymous

может у тебя режим enriched-mode вклчючен?
в статусной строке в центре в скбочках пишутся режимы
есть там слово Enriched?

у меня 23 емакс. так этот режим включяется только для
файлов в расширениме rtf.
я беру твой текст, который в rich формате, и сохраняю его
в файле с расширением rtf. Этот файл мне емакс открывает как
коррекнтый lisp код, т.е скрывает всю хрень.
затем набираю
M-x enriched-mode RET
емакс пишет что enriched mode disable
набираю один символ и сохнанаю файл. теперь содерижомое
буфера и файла у меня одинаковые.

h1t
()
Ответ на: комментарий от h1t

> может у тебя режим enriched-mode вклчючен?

Так точно. Благодарю за помощь, как вырубить это вырубить я думаю разберусь. Скомпилилось нормально.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.