我有宏let--(如讓*使用lambda表達式)在詭詐爲什麼這個lisp遞歸宏不起作用?
(define (let-make-lambdas pairs body)
(if (null? pairs)
`((lambda() ,@body))
`((lambda (,(caar pairs))
,(let-make-lambdas (cdr pairs) body))
,(cadar pairs))))
(define-macro (let-- pairs . body)
(let-make-lambdas pairs body))
它工作正常,當我使用一個外部函數做代碼生成,但下面的代碼(與僅僅是一個宏)不起作用:
(define-macro (let-- pairs . body)
(if (null? pairs)
`((lambda() ,@body))
`((lambda (,(caar pairs))
,(let-- (cdr pairs) body))
,(cadar pairs))))
爲什麼?
忘了括號? :P – 2013-10-23 18:30:55
宏調用似乎不符合其定義:點缺失。 – sds
@sds'.'用於定義Common Lisp中的'&rest'列表。在第一種情況下,jcubic正在定義一個函數來執行代碼擴展,並且_macro_ _does_包含'.' –