読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

CommonLispで簡単に自作ライブラリをロードしたい

require、asdf、quicklispなど選択肢も解説もやり方も多数見つかってよくわからないCommon Lispのモジュール関係。

やりたいのは次のような構成で

app.lisp
watch.sh
library/
    module-a/
    module-b/

watch.shでファイル変更を監視して、sbcl --scriptか何かでdeploy.lispやapp.lispを走らせて〜みたいなことがしたい。

が、調べても結局どのような構成にするべきなのかわからなかった。なのでgithubasdf:defpackageあたりを調べてどうにかロードできるようになった

├── README.md
├── app.lisp
├── ps-app-lib
│   ├── package.lisp
│   ├── ps-app-lib.asd
│   └── src
│       └── ps-app-lib.lisp
└── watch.sh

このような構成で、ps-app-libが自作ライブラリとする。package.lispとモジュール名.asdを書いて、app.lisp

(push "./ps-app-lib/" asdf:*central-registry*)
(ql:quickload :ps-app-lib)

(defpackage :test-app
  (:use :cl :parenscript :ps-app-lib))

(in-package :test-app)

このようにasdfのサーチパス?に追加してquickload、defpackageでuseする

……というやり方でできたんだけど、猛烈に間違ってる気がしてならない。何かこう指針がほしい。

広告を非表示にする