Scheme 如果我有:(应用f';(x1 x2 x3…xn))和I';I’我想把它改成宏扩展

Scheme 如果我有:(应用f';(x1 x2 x3…xn))和I';I’我想把它改成宏扩展,scheme,Scheme,我有(apply f'(x1 x2 x3…xn)),我想将其更改为宏扩展:(f x1 x2 x3…xn)。会发生什么样的问题?如果您正在转换 (define (my-apply f args) (apply f args)) 到 这样看来就足够简单了。在这种情况下,最大的陷阱是您必须记住不要引用传递给宏的列表 >(my-apply + '(1 2 3)) >6 >(my-other-apply + '(1 2 3)) >ERROR syntax-error: "

我有
(apply f'(x1 x2 x3…xn))
,我想将其更改为宏扩展:
(f x1 x2 x3…xn)
。会发生什么样的问题?

如果您正在转换

(define (my-apply f args)
   (apply f args))

这样看来就足够简单了。在这种情况下,最大的陷阱是您必须记住不要引用传递给宏的列表

>(my-apply + '(1 2 3))
>6

>(my-other-apply + '(1 2 3))
>ERROR syntax-error: "(+ quote 1 2 3)"

>(my-other-apply + (1 2 3))
>6

你还没有接受其他8个问题中的任何一个。他们都不是你问题的正确答案吗?如果(其中一些)是正确的,请花时间仔细阅读并接受这些正确答案(只需在答案旁边的“V”形图标上打勾即可)。
>(my-apply + '(1 2 3))
>6

>(my-other-apply + '(1 2 3))
>ERROR syntax-error: "(+ quote 1 2 3)"

>(my-other-apply + (1 2 3))
>6