- 300 名前:270 mailto:sage [04/09/14 10:38:48]
- >>298
やっぱり Gauche はバランスがよく取れているということなのでしょうか。 >>299 そうか!マクロか!と思って、さっそく>>288 のコードをマクロ化してみました。 ;元の関数 ;(案の定バグがあった(停止しない)ので修正してある。) (define make-function (lambda (s-form null-value) (lambda (list0) (if (null? list0) null-value (s-form (atom? (car list0) ((make-function s-form null-value) (cdr list0)))))))) ;マクロ化したもの (define-syntax make-function (syntax-rules () ((_ s-form null-value) (lambda (list0) (if (null? list0) null-value (s-form (atom? (car list0)) ((make-function s-form null-value) (cdr list0)))))))) そうしたら、マクロ展開が停止しないんです。再帰的定義なのに停止条件がないから。 この場合、どう書いたらよいのでしょうか?ヘタレですみません。
|

|