【发布时间】:2021-01-14 21:52:38
【问题描述】:
我定义了以下宏...
(define-syntax >> ;;compose
(syntax-rules ()
[(>> f1 [args ...])
(lambda (x) (f1 args ... x))]
[(>> f1 [args1 ...] f2 [args2 ...] rf ...)
(>> (lambda (x) (f2 args2 ... (f1 args1 ... x)) ) rf ... )]
[(>> f1 [args1 ...] f2 rf ...)
(>> (lambda (x) (f2 (f1 args1 ... x)) ) rf ...)]
[(>> f1 f2 [args2 ...] rf ...)
(>> (lambda (x) (f2 args2 ... (f1 x)) ) rf ...)]
[(>> f1 )
(lambda (x) (f1 x))]
[(>> f1 f2 rf ...)
(>> (lambda (x) (f2 (f1 x))) rf ...)]))
为了帮助我以这种方式编写函数:
(define composed-function (>> (lambda (x) (+ x 1)) (lambda (x) (+ x 1))))
问题是,命名函数一切正常,但是当我使用上面示例中描述的 lambdas 时,我收到“lambda: bad syntax in lambda”这样的错误,知道为什么会发生这种情况吗?
【问题讨论】: