EoPL reading (64) 2.2 An Abstraction for Inductive Data Type

現実トウヒの成果を以下に。
よくよく見たら

  • lambda の引数が単発しか指定できん
  • app-exp ってリストの要素二つ限定

どうしたものやら、といいつつ今日は EoPL 携帯を忘れてます。勝ち目ナシ。ってか EoPL 読みが足りてない気がしてきました。なんとなくこれ系の記述っぽいソレがあった気がします。とほほほ。

帰宅後

EoPL 確認。正に list-of 使う模様。expression の定義は以下で良いのかな。

(add-load-path ".")
(load "define-datatype")

(define list-of
  (lambda (pred)
    (lambda (val)
      (or (null? val)
	  (and (pair? val)
	       (pred (car val))
	       ((list-of pred) (cdr val)))))))

(define-datatype expression expression?
  (lit-exp
   (datum number?))
  (var-exp
   (id symbol?))
  (if-exp
   (test-exp expression?)
   (true-exp expression?)
   (false-exp expression?))
  (lambda-exp
   (ids (list-of symbol?))
   (body expression?))
  (app-exp
   (rator expression?)
   (rands (list-of expression?))))

うーん。違う。試験もパスしない。
今日は超絶不調らしいんで、止めます。