2017-02-20 21 views
0

В комментарии от sds по адресу Saving CLOS objects приведена ссылка на файл общей коллекции открытого кода Lisp (CLOCC) (closio.lisp) для распечатки с возможностью печати &, в котором записаны объекты CLOS. Инструкции по установке программного обеспечения: Installation of CLOCC. Однако, не используя ранее CLOCC, я хотел бы получить дополнительные рекомендации по настройке объектов для чтения/записи объектов CLOS. Вот дополнения в мой файл инициализации (.clinit) до сих пор:Установка CLOCC и пакетов

(in-package :cl-user) 
(setq *clocc-root* "D:\\clocc\\") 
(load "D:\\clocc.fasl") 
(load 
    (compile-file ;warns about |make|::COMPILED-FILE-P being undefined 
    (translate-logical-pathname 
     "clocc:src;defsystem;defsystem"))) 
(dolist (s '("clocc:src;cllib;base" "clocc:src;port;sys")) 
    (mk:add-registry-location (translate-logical-pathname s))) 

Инструкции для чего добавить следующий оценили.

+0

Вы следовали инструкциям в 'INSTALL 'файл, который вы ссылаетесь на шаг за шагом? вам нужно скомпилировать файл с помощью 'mk: oos', а затем загрузить все нужные вам файлы, и вам хорошо идти. – sds

+0

Следующие два утверждения, которые я пробовал, - '(mk: oos" cllib ": compile)' и '(mk: oos" port ": compile)' , но они вызывают ошибку - например, Не удается найти система под названием «cllib». Кроме того, try '(mk: oos" src \\ cllib ")' где расположены каталоги, но такая же ошибка. – davypough

ответ

1

Инструкции были устаревшими. Сожалею.

installation instructions теперь говорят (я удалил системы вам не нужны):

(compile-file "c:/gnu/clocc/clocc") ; or whatever ... 
(load *) 
;; * load the defsystem facility 
;; most lisps come with "asdf"; if this fails, get it yourself from 
;; https://common-lisp.net/project/asdf/ 
(require "asdf") 

;; * compile some systems 
(asdf:compile-system "port") 
(asdf:compile-system "cllib") 
... 

Вам нужно будет следовать asdf instructions:

$ mkdir -p ~/.config/common-lisp/source-registry.conf.d/ 
$ echo '(:tree "c:/gnu/clocc/")' > asdf.conf 
+0

Дох, на 2-й базе (с использованием Allegro CL). При компиляции mop.lisp (в порту) функция определения «slot-definition-initargs» является неопределенной, вместо этого вместо этого вызывается «mop: slot-definition-initargs». Это приводит к той же ошибке для 'class-direct-slots'. – davypough

+0

Похоже, что «порт: mop» нуждается в обновлении для последней Allegro. Нам понадобится немного вперед и назад. Пожалуйста, замените ': clos'': mop' в строке 19 в 'port: mop.lisp'. Он работает сейчас? – sds

+0

Изменение ': clos' to': mop' в строке 19 (для аллегро) по-прежнему вызывает такую ​​же ошибку для 'slot-definition-initargs'. Продолжая вместо этого 'mop: slot-definition-initargs', а после этого с помощью' mop: class-direct-slots', получим Error: нет методов, применимых к общей функции # с аргументами args (# ) классов (EXCL :: STRUCTURE-DIRECT-SLOT-DEFINITION) [тип условия: PROGRAM-ERROR]. – davypough