Hatena::ブログ(Diary)

the Unspeakable One

2012/04/10

[library][xyzzy] CL-HAMLが xyzzyに対応しました

xyzzyという Common Lispベースの拡張言語を採用した Emacs風のエディタCL-HAMLが動くようになりました。私だけが嬉しいバージョンアップですね。バージョン番号上げるの忘れてた。

xyzzy対応でのやったこと色々

xyzzy lispCommon Lispへの対応状況は6割くらい」みたいな話をどこかで見た気がしますが、実際に ANSI Common Lisp処理系で動作しているライブラリを動かそうとしたときに、結構な問題にブチあたりました。そして、いろいろ助けてもらいました。


CLOSが無い

クラスが作成出来ない(構造体はある)。メソッドが作成出来ない。

今回は、構造体で問題無いレベルのクラスしか使用していなかったので、構造体に変更してしまった。


PATHNAMEが無い

pathnameという型は存在しない。でも pathname関係の関数はそれなりに揃っている。pathnamepが定義されていなかったので、常に nilを返す関数として定義した。


LOOPマクロが標準では非常に貧弱

標準の LOOPマクロ無限ループするだけ。

cmu_loop という拡張loopライブラリがあるけど、動きが怪しい。

id:miyamuko =サンの ansi-loopというライブラリを利用することで、対応出来た。


clパッケージが無く、lispパッケージ

clパッケージは存在せず、lispパッケージがその役割を担っているらしい。

"#+xyzzy :lisp #-xyzzy :cl" という感じで対処。


cl-userパッケージが無く、userパッケージ

上に同じく、"#+xyzzy :user #-xyzzy :cl-user" という感じで対処。


CL-HAMLが依存するライブラリも移植しないと...

CL-HAMLCL-WHOに依存しています。なので、先に CL-WHOを xyzzy上で動作するようにしないといけないのでした。

という話を Twitterで呟いたら、id:youz =サンが凄い速さで移植してくれたので万歳。


ANSI Common Lisp関数マクロがチョイチョイ存在しない

これもない!アレもない!と吃驚する。

id:bowbow99 =サンの ansifyというライブラリで結構な範囲がカバーされている。大変ありがたい。


思えば遠くに来たものだ...

xyzzyは最近、有志による開発の再開が行われるようになりました。私がLispを触るようになった切っ掛けは xyzzyの拡張を読み書き出来るようになりたい!という気持ちだったこともありまして CL-HAMLxyzzyで動作させることにしたのでした。ちなみに「xyzzy lispを ANSI Common Lisp準拠にしたい」と思ったけど、xyzzyのソースのどの部分がlisp処理系なのか 調べる段階で面倒になったなんて言えない。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/inuzini-jiro/20120410/1334029232