0
我正在寫一個名爲annotate的函數,它使用match-lambda,通常用遞歸調用來註釋。這裏是模式匹配中的一個:與匹配拉姆達匹配的方案模式
(`(lambda (,<param1> . ,<params>) ,<stmts>)
`(CLOSURE ENV (,<param1> . ,<params>) `(lambda (ENV) ,(map annotate ,(list-append `(,<param1> . ,<params>) `(,<stmts>))))))
list-append只是使兩個參數中出現新的列表。問題是,這種模式匹配器,當它返回是這樣的:從字面上
'(CLOSURE
ENV
(x)
`(lambda (ENV)
,(map
annotate
(<results of list-append>))))
具體來說,「(地圖註解」版畫,而不是評估 - 即使它正在不帶引號的功能內的其他模式出現。使用完全相同的語法,沒有這個問題還有,不帶引號的功能列表 - 添加,沒有任何問題,執行
任何建議表示讚賞
我試過了,它抱怨說,「(list-append)」之前沒有引用準引號 – Schemer
您需要刪除逗號;'map annotate'將位於quasiquote之外(因爲您想要運行它),所以你不需要在裏面引用東西 –
啊,list-append並不需要被引用,謝謝 – Schemer