Common Lisp を垣間見る (→ 見なかった)

Lisp をちゃんと書いたことがない
Common Lisp を一瞬だけ見にいきます。キャッチできる情報も増えて悪くないはず!

環境構築 [失敗]
処理系
最新の sbcl は 2.2.3 ですが、 AtCoder の sbcl は 2.0.3 です。
AtCoder の sbcl はライブラリを一切いれておらず、 2023 年の更新も無いようです。スタック周りの修正ぐらい入れたら良かったのに……?
そのため roswell で sbcl 2.0.3
をグローバルインストールします。今は動けばよかろうなのだ!
$ ros setup
$ ros install sbcl/2.0.3
NixOS でインストールに失敗。検討中です……。 ハックでなんとかしている人 はいますね。達人なら Flakes でなんとかするのかなぁ……
エディタサポート
Emacs では slime を入れると REPL でホットリロードができていい感じらしいです。
(leaf slime
:custom (inferior-lisp-program . "sbcl"))
言語サーバは無い、と思いきや Swank (Slime のサーバ部分) と Slime (クライアント部分) の関係が言語サーバとクライアントの関係なのだとか。何をどこまでやってくれるのか見てみたいですね。
パッケージ管理
他人の書いたパッケージを利用する場合,1.インストールし,2.プログラムをロードする必要があります.
インストールをしてくれるのがQuicklisp,依存関係を解決しロードしてくれるのがASDFと理解して良いと思います.
ここは一旦飛ばします。

環境構築 [妥協]
NixOS にて:
- sbcl
sbcl_2_0_8
を sbcl 2.0.3 の替わりに使います。 - slime or sly
こちらはros install
で素直に入ります? 一体どの slime が動いているのか…… - スクリプト実行
sbcl --script ./Main.cl
で実行します。ビルドしても全然良いですが。
Emacs に evil-collection-slime-setup
を入れて、一応動いてそうですね。パッケージは飛ばして Common Lisp を見てみよう!

Practical Common Lisp
エアプで読んでみます。
1. Why Lisp?
- ポスト Rust の時代に Common Lisp を使う理由は……
- 構文に興味があります。自作言語の参考にしたいのですよね。
2. Lather, Rinse, Repeat: A Tour of the REPL
- いきなり Emacs (Lispbox) 前提で敷居が高いですね。 Evil ユーザで良かった。
- 式指向な感じが、当時にしては異常にセンスが良かったんだろうと重います。
- SLIME がコード編集を激烈にサポートしてくれるみたいです。 NixOS でも簡単に動いてくれ……!
TODO

AHC
無謀過ぎますが、これで練習しようと思います。貪欲解で 1 点でも取れたら OK ということで!
リンク
- 開催期間は 15:00 ~ 19:00 (4 時間)
- 解答の提出間隔は 30 分
- コンテスト中は一切発信しないほうが無難
懸念
まず木が無いのがマズいです。いかにコンテスト中に他人のコードを吸収できるかの戦いとなります。
雑念
しかし Common Lisp の実行コマンドは sbcl --script
で本当に良いのか……? 実はインタープリタ実行になっていたら絶望です。

Common Lisp 何も分からない
AHC に備えて IO ぐらい調べるつもりが
Address boundary error
そんなことある??
(defun main ()
(print "WIP"))
(main)
nixpkgs の sbcl 2.0.8 が壊れていた気がします。 2.0.9 に上げたら直りました。

ABS
TODO

永遠になりました……
永遠に……