Medleyを使ってみよう(1) — #:g1

Posted 2010-11-12 14:25:00 GMT

80年代初頭で二大LISPといえば、MacLISPとInterlispのことだったらしいですが、今の二大LISPといえば、Common LispとSchemeで、MacLISP系のCLやEmacs lispに触る機会はあってもなかなかInterlisp系に触る機会もなくなってしまいました。
ほぼ見掛けなくなったInterlispですが、実はMacLISP系/Interlisp系ともにLispマシンが作成されていて、MacLISP系は、CADR〜Symbolics、Interlisp系は、XeroxのInterlisp-Dと進化をしていったようです。
このInterlisp-Dなのですが、最終的には専用マシンが仮想マシン化されていて、仮想マシン化されたものは、Medleyと呼ばれているようです。
このMedleyなのですが、丁度5年程前に、
- Swiki: Interlisp-D
の記事を読んで面白いと思ってちょっといじってみていました。
- #:g1: Interlisp-Dを使ってみる
当時はLISPのことは殆ど分からなかったのですが、今なら少しは分かるようになったので、改めていじってみようかなと思います。

起動させる

とりあえず、上記のInterlisp-D紹介ページのリンクを辿って
ftp://ftp.parc.xerox.com/pub/lfg/ldex
ftp://ftp.parc.xerox.com/pub/lfg/lfg.sysout.gz
をダウンロードします。
ldexに実行属性をつけ、
./ldex lfg.sysout
で起動すれば良いのですが、libcのバージョンやらなにやらで起動しないことが結構あります。
OSが変わる度に動いたり動かなくなったりすることも多いので、今回は、qemuや、VMware上で動かしてみることにしました。
ちなみに、自分は、VirtualBoxで試しています。
自分が動くことを確認したのは、ちょっと古めのKNOPPIX V3.6-2004です。
KNOPPIX_V3.6-2004-08-16-EN.iso
を探してこのLiveCDから起動するのが簡単かなと思いました。
LiveCDでOSを起動させ、仮想マシンに上記のダウンロードしたファイルを設置し、
./ldex lfg.sysout
として起動してみます。
送信者 LISP

という感じで起動します。
実は、このMedleyはこれ単体で配布されているのではなく、LFGというアプリケーションを動かす環境として配布されているらしいのですが、Medleyもほぼ丸ごと付属してきている、ということらしいです。
とりあえず、Medleyの環境を使いたいので、LFGのアプリは、ウィンドウの画面の上で右クリックしてぽちぽち消して行きます

LISP環境の起動の仕方

送信者 LISP

LISP環境としては、Interlispだけでなく、Xerox Common Lisp(CLtL1)も起動します。この環境もなかなかレアではないでしょうか。
起動方法ですが、右クリック→EXEC→でXerox Common Lispでリスナーが開きます。
ヘルプは、リスナー上で、:?するとヘルプ一覧が出てきます。

関数を定義して遊ぶ

関数の定義は、
(ed 'foo)
などとすると、エディタが開くので、それを編集するという流れになります。既存の定義も同じようにして編集できます。

環境はイメージ指向

今の馴染みの開発/実行環境は、関数定義などは、ファイルに書き出すというファイル指向だと思いますが、Medleyは、同じXeroxのSmalltalkと同じようにイメージ指向です。
環境の保存には、右クリックメニューからSaveVMを選択しイメージの状態を保存します。
この方法だと、ホームディレクトリ直下にlisp.virtualmemというイメージが保存されます。
次回起動時には、
./ldex lisp.virtualmem
とすることによって保存した仮想マシンの状態をそのまま復活させることができます。

ということで今回はざっと導入までを調べてみましたが、結局CLの方を触ってばかりで、全然Interlispの方は触っていませんでした。
徐々に、Interlispの世界も探っていきたいと思います。

comments powered by Disqus