こないだのlambda版ifをマクロで書いてみる
(define true (lambda (x y) (x))) (define false (lambda (x y) (y))) (define-syntax my-if (syntax-rules () ((_ p x y) ((pred-conv p) (lambda () x) (lambda () y))))) ;;真偽値コンバータ(相変わらず汚ない) (use srfi-13) (define (pred-conv boolian) (eval (read-from-string (regexp-replace #/#t/ (regexp-replace #/#f/ (x->string boolian) "false") "true")) (interaction-environment)))
せんせい、まるでおもしろいところがありません!><