provideとrequire
ちょっと自信ないけど、一応。
CommonLispではrequireは同じファイルは一度しかロードしないと定義されている。
ただし、その機能を使うにはrequireされるファイルでprovideしている必要がある。
例えば、
;; foo.lisp (provide "foo") (defun f(x) x)
というfoo.lispと
;; bar.lisp
というbar.lispを用意する。
ほいで、インタプリタでロードしてみると、
> (require "foo") $ clisp (中略) [1]> (require "foo") ;; Loading file /Users/mzp/Workspace/ldoc/foo.lisp ... ;; Loaded file /Users/mzp/Workspace/ldoc/foo.lisp T [2]> (require "foo") NIL [3]> (require "bar") ;; Loading file /Users/mzp/Workspace/ldoc/bar.lisp ... ;; Loaded file /Users/mzp/Workspace/ldoc/bar.lisp T [4]> (require "bar") ;; Loading file /Users/mzp/Workspace/ldoc/bar.lisp ... ;; Loaded file /Users/mzp/Workspace/ldoc/bar.lisp T
となる。