CommonLispのパッケージについてメモ

パッケージ

使い方
  • パッケージ定義
(defpackage :jp.gr.ok.test
  (:use :common-lisp)
  (:export :hoge))
  • カレントパッケージ(*package*)の切替
(in-package :jp.gr.ok.test)
  • 指定したパッケージの(エクスポートされている)シンボルを全てインポート
(use-package :jp.gr.ok.test)
;インポートされると、パッケージ指定なしで参照可能
(hoge)
  • インポートせずに(ロードのみ実施)シンボルを参照
(load "C:/temp/test.lisp")
;参照する際はパッケージ指定が必須
(jp.gr.ok.test::hoge)
  • ロードされているすべてのパッケージを表示
(list-all-packages)
標準パッケージ
  • COMMON-LISPパッケージ(ニックネーム:CL)
    • 言語標準の全シンボルをエクスポートしているパッケージ
  • COMON-LISP-USERパッケージ(ニックネーム:CL-USER)
    • Lisp起動時のカレントパッケージ
    • COMMON-LISPパッケージを使用する
  • KEYWORDパッケージ
    • 接頭辞がコロン(:)の名前をインターンする際に利用するパッケージ
定石
  • defpackage は以下のいずれかのファイル分割に従って記述する
    • パッケージ毎に「パッケージ名.lisp」ファイルを作成して記述
    • 「package.lisp」にすべてのパッケージ定義をまとめて記述
  • 各ファイルの冒頭に in-package フォームを記述する
  • パッケージ名は Java 方式で命名(パッケージ名はただの文字列であるが)

参考文献

実践Common Lisp

実践Common Lisp