【发布时间】:2023-03-18 08:40:02
【问题描述】:
我不是 Scheme 专家,所以不确定我是否在这里使用了正确的术语。让代码自己说话:
CSI> (define tree '(1 2 3 'Symb 4 5 6))
#<unspecified>
CSI> tree
(1 2 3 (quote Symb) 4 5 6)
CSI> (symbol? 'Symb)
#t
CSI> (map symbol? tree)
(#f #f #f #f #f #f #f)
来自 Clojure 背景,我认为符号在 Scheme 中是这样使用的,就像 Clojure 中的关键字一样。我应该通过嵌套列表结构并用函数调用替换符号。这是我的一维解决方案,它确实有效:
(define (print-track track attrs)
(apply fmt #t
(map (lambda (attr)
(cond
((symbol? attr) (get-attr attr track))
(else attr)))
attrs)))
(symbol?) 行上方的空白区域用于(list?) 条件,但这可能是错误的方法。
我正在使用鸡计划。
【问题讨论】: