2008-02-07から1日間の記事一覧

変数=値と書くletマクロ

Arc版withを書いててふと思った。 ローカル変数部か評価式本体かの区別は、括弧のかわりに=を使ったらよくね? (define-syntax letm (syntax-rules (=) ((_ (ks vs) k = v . r) (letm ((k . ks) (v . vs)) . r)) ((_ (ks vs) . body) ((lambda ks . body) .…

GaucheのArc化計画

実は単にマクロの練習としてArcを題材にしただけ。 Arc版if 3つ以上の引数が渡せてelseifの処理が書ける (define-syntax if (syntax-rules () ((_ a) a) ((_ a b . c) (cond (a b) (else (if . c))))))実行例 gosh> (if #f (print 1) #f (print 2) (print 3)…