#:g1: INTERLISP的Xmas

Posted 2007-12-25 14:38:00 GMT

昨日突然、INTERLISPの処理系の新バージョン登場というふれこみで、comp.lang.lispにINTERLISP系の処理系のタレこみがありました。
タレこんだ人は、作者さん本人で、Blake McBrideさんなのですが、INTERLISP系というのは珍しいので、早速ダウンロードして試してみました。
-(http://blake.mcbride.name/software/lispf4/index.html)
Windowsと32bit Linuxだと素直に使えます。
INTERLISPには馴染みが薄い自分はなんとも言えませんが、大体普通のINTERLISPと同じ感じです。
INTERLISPにはマクロがなくその代わりに、引数を評価しないで取り込む、NLAMBDAという仕組があるのですが、この辺の使い方がちょっと違うかもしれません。
NLAMBDAはどんなもんなのかというと、

((nlambda (x y z) (list x y z)) foo bar baz)
;=> (foo bar baz)
というものです。
確かにこの仕組があれば、MACLISP系のマクロに相当するものは書けそうです。
ということで、色々試してみましたが、Lispf4では良く分からなかったので、
確認のため、PDP-10のINTERLISP-10でDOLISTを作ってみることにしました。
defineq (
    (dolist (nlambda l
	     ((lambda (var list body tag l)
		(eval `(prog (,var)
			     (setq ,l ,list)
		        ,tag (cond ((null ,l) (return)))
			     (setq ,var ,(car l))
			     ,@body
			     (setq ,l (cdr ,l))
			     (go ,tag))))
	      (caar l) (cadar l) (cdr l) (gensym) (gensym)))) )
という感じに作ってみましたが、EVALを呼んだりしてところなどがちょっと違うんじゃないかなあ、と思っています。
もう少し資料を探さなくては…。Lispf4でも大体近い感じなのですが、バッククオート等は使えないようです。うーん。どうするのが定石なのか。

文章の流れとは全然関係ないのですが、今日は12/25日ということもあり、INTERLISP-10の処理系を起動すると、
@lisp
INTERLISP-10  31-Dec-84 ...
Merry Christmas.
3_
と挨拶してくれます。
いつもは、Hi.だけなのですがクリスマスや、ハロウィンなどでメッセージが変わるようです。
地味にいい味出してます。

comments powered by Disqus