lisp

quicklisp on windows上の処理系(clozureCL&sbcl)でちゃんと動かないときのパッチ

versionは2010101600で当ててます。原因はql:*quicklisp-home*がドライブレターが入ってないので自分で正しいパスをセットしてやれば動きます。 自分は面倒だったのでパッチ用意しました。 --- quicklisp.org/setup.lisp 2010-10-28 13:02:57.808556700 +090…

quicklisp on sbcl@ubuntu が動かないのでどうにかしてみた

ubuntuにquicklispをinstallして(ql:add-to-init-file)してsbclを再起動すると起動に失敗します。調べてみるとcommon-lisp-controllerとやらでロードする場所に #p"~/.clc/systems/" が指定してあり、これが引っかかるようです。cl-asdfでinstallされているa…

requireのカスタムプロバイダ

lispにはrequireと言う関数があります。 モジュール名を指定することでそのモジュールをロードしてくれる、と言う関数です。ちなみにrequire関数がモジュール名と実際にロードするファイルの関連付けする方法は処理系依存とのこと。自分はsbclでやったので他…

行列演算

ちょいと3Dを勉強しなおしてるわけですが計算用の道具でよさげなのが手元にないのです。 maximaがいい感じなのですが検算用に使いづらい。一応ループや条件分岐などのロジックは書けるようなのですが、中途半端にlispっぽさを引きずってて馴染めそうに無いの…

slimeでminibufferでの引数リストをすべて表示させる

emacs + slimeでminibufferに引数リストが表示されるのだが、デフォルトでは1行分しか表示されないため、引数が多い関数を使う場合にリファレンスを見ることになる。 hyperspec にのってるやつなら C-c C-d hでブラウザが立ち上がるのでそれほど苦でもないの…

eq, eql, equal, equalp でハマる。

lispの比較関数でハマりました。 どういうのかって言うとstreamから文字読み出していって文字列にしてハッシュに叩き込む、というやつです。ちょうどそれ書いてる数時間前にclsqlでテストデータ投入するコード組んでて最初、すごく遅かった(18件/秒くらい)ん…

Y combinator. そして末尾再帰に取り付かれる

不動点演算子といってラムダ計算やらコンビネータ理論やらのものらしいです。 ちゃんと調べてないのでよくわかってません(笑)ただ、これを使うと無名関数を再帰することができる、ということです。で自分で実装して考えてみる。 まずは再帰のお供、fact関数…