Skip to content

Instantly share code, notes, and snippets.

@fukamachi fukamachi/seminar2019.md
Last active Dec 1, 2019

Embed
What would you like to do?
Common Lisp Seminar 2019 ログ by fukamachi

Common Lisp Seminar 2019

2019/08/24 本町オープンソースラボ(大阪府大阪市中央区瓦町3-4-9) https://tcool.connpass.com/event/117789/

@fukamachi が聴いた質問をまとめました。

Q. 自分のプロジェクトを .roswell/local-projects 置くのは一般的なのか?

一般的かどうかはわからないです。~/.roswell/local-projects に置く以外に、~/common-lisp に置いたものもASDFが探してくれます。 シンボリックリンクでも元をたどって探してくれるので、 ln -s ~/path/to/project ~/common-lisp とかしておくとql:quickloadできるようになります。※1

myaoさんは asdf:load-asd でロードしてから ql:quickload しているそうです。自分のプロジェクトを使う場合に開発版と安定版を使い分けたいという要求からだそうです。 システムがどこからロードされているかは、 (ql:where-is-system :yubin) とやるとわかります。

※1シンボリックリンクはClozure CLで動かないという話もありました

Q. lemのREPLでqlot:quickloadするとAlexandriaのバージョン違いエラーが出る

Error finding package for symbol "POSITIVE-FIXNUM":
The name "ALEXANDRIA.1.0.0" does not designate any package.
  [Condition of type ASDF/FIND-SYSTEM:LOAD-SYSTEM-DEFINITION-ERROR]

lemのREPLではlemに必要なライブラリがすでにロードされており、Alexandriaもロードされている状態です。 そのバージョンとQlotでロードした依存ライブラリとしてのAlexandriaのバージョンが違うため起きていたようです。

lemでは M-x slime で新しいLispプロセスを立ち上げてQlotを実行するとよいです。

また、 qlot:quickload する以外に独自のlemコマンドを .lem/init.lisp に追加することで、QlotのプロジェクトローカルQuicklispを有効にしたREPLを起動できます。

M-x slime-qlot-exec https://github.com/fukamachi/.lem/blob/master/init.lisp#L12-L14

Q. clackupで起動したLispサーバープロセスはどうやって終了するのか

C-cで終わります。

Q. .lispファイルをスクリプトのように実行するにはどうしたらいいか

ros -l file.lisp で実行できます。

Q. deftest get-place とすると関数が再定義されてしまう

Roveの昔のバージョンでは deftest が関数定義になっていましたが、Roveのバージョンが0.9.0以上ではこの問題は起きません。 Roveのアップデートをすると問題は解決します。 アップデートは ros update rove で行います。

もしQuicklispで (ql:quickload :rove) でインストールしている場合は (ql:update-all-dists) でQuicklisp distをすべてアップデートできます。

問題

  • PDFからコードをコピーするとクォート・バッククォートが異なる文字になり実行できない
  • 4.3のテストコードの閉じカッコの位置が違う
  • 4.4のテストが「谷」の字が異なるために通らない
  • .roswell/local-projects にプロジェクトを作る+Qlotを使うと ~/.roswell/local-projects/yubin/quickslisp にプロジェクトローカルQuicklispがインストールされてしまい、再帰的に呼び出されてしまう
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.