При создании пакетов лучше поместить defpackage в отдельный файл

Пример ниже дан в Paul Grahams ANSI Common Lisp в качестве примера выполнения инкапсуляции:

(defpackage "CTR"
  (:use "COMMON-LISP")
  (:export "COUNTER" "INCREMENT" "CLEAR"))

(in-package ctr)

;function definitions here

Однако в Peter Seibels Practical Common Lisp, ссылка здесь , он говорит:

Поскольку пакеты используются читателем, пакет должен быть определен прежде, чем вы сможете ЗАГРУЗИТЬ или Скомпилировать файл, содержащий IN-PACKAGE выражение переключения на этот пакет. Пакеты также должны быть определены прежде чем другие формы DEFPACKAGE смогут ссылаться на них ... Лучший первый шаг к тому, чтобы пакеты существовали тогда, когда они нужны to заключается в том, чтобы поместить все ваши DEFPACKAGE в файлы отдельно от кода, который должны быть прочитаны в этих пакетах

Поэтому он рекомендует создавать два файла для каждого пакета, один для defpackage и один для кода. Файлы, содержащие defpackages, должны начинаться с (в пакете "COMMON-LISP-USER").

Мне кажется, что размещение defpackage в том же файле перед in-package и кодом - хороший способ убедиться, что пакет определен перед использованием. Таким образом, первый способ - собрать все в один файл - кажется более простым. Есть ли проблемы с использованием этого метода для создания пакетов?

9
задан snowape 7 December 2011 в 13:26
поделиться