3imp 読んでみる (17)

昨晩、色々ぐだぐだヤるも微妙。新たな環境による疲労と家の雑事でへろへろ。lambda の body に複数の命令を盛り込むためには SICP の M-EVAL で言う eval-sequence みたいのが無いと駄目なのでしょうか。
とりあえず

		 [lambda (vars body)
		   (list 'close vars (compile body '(return)) next)]

の body な部分??
ウケる部分が

		 [lambda (vars . body)

ってデキれば良いのだけれど、これはこれで compile の中でどう扱うかが微妙。こんなカンジで良いのかなぁ。VM 方面でどうなってれば良いのか、というソレも考慮が必要に思えます。とりあえず出かけるみたいなので検討中断。

続き

負傷。もの凄く思いっきり指をタタいたので自分でびっくり。小指は包帯なんですがマけずに検討続行。ちなみにまだ麻酔がキいてるのでナニですが、どうなるんでしょ。
そりゃ良いとして

((set! x 1) x)

みたいなソレをどう扱うか、は微妙。どっちかとゆーと

		 [lambda (vars . body)
		   (list 'close vars (compile-seq body '(return)) next)]

かなぁ。これで出てくるであろうリストを VM に吸わせてみたいな。SICP の eval-sequence をマネると以下か

(define (compile-seq exp next)
  (if (null? (cdr exp))
      (compile (car exp) next)
      (compile (car exp) (compile-seq (cdr exp) next))))

で、以下の試験を書いてみましたが NG (試験なメセジは略
おかしいな、と言いつつ record-case の定義とか見直してみると動きそげ、に見えるんだけどなぁ ...
ちょっと今日は色々な意味で微妙なので安静にしておきます。