「プログラミングGauche」P.75~76 構文の拡張とマクロ
取り合えず「quate」がまだ正式に出てきてない段階なので「quate」「'」があまりよくわからないので少し試し書き。
evalとか試してみた。引数が2つ必要みたいだけど、何を渡したらいいのか調べず、取り合えず'()を渡したら動いたので続行。
;; (define double (lambda (x)(* x x))) -> (define (double x)(* x x))
exp
(eval exp '())
double
(double 5)
(define double 1)
exp |
'(define double (lambda (x)(* x x)))に対してのcarとcdrの動作を確認してみる。
;; (define double (lambda (x)(* x x))) -> (define (double x)(* x x)) |
ようやく本題。lambda記法をmit記法に変換。コメントのために少しインデントを崩してます。
;; (define double (lambda (x)(* x x)))
(lambda->mit exp)
(define a (lambda->mit exp))
(eval a '())
(double 3) |
0 件のコメント:
コメントを投稿