我创建了一个功能,可以为列表中的项目提供某个分数
(define newlist '((score 'A ) (score 'A1 ) (score 'A2 )))
但无法让它返回(X Y Z)列表。 只有
'((score 23 ) (score 12 ) (score 7 ))
这只是我变量的替换值。
答案 0 :(得分:1)
您可以使用map
功能:
;if A, A1 and A2 are to be used as symbols:
(define newlist (map score '(A A1 A2)))
;which is equivalent to:
(define newlist (map score (list 'A 'A1 'A2)))
;however, if A, A1 and A2 are variables whose values you wish to use:
(define newlist (map score (list A A1 A2)))
答案 1 :(得分:0)
当您使用quote
(字符'
)时,未评估的内容如下。因此,在您提供的内容中,不评估三个项目的整个列表。要评估使用list
,请执行以下操作:
(define newlist (list (score 'A) (score 'A1) (score 'A2)))
正如@kmoerman所指出的,还有其他方法,使用map
来获得有效的结果;但是,您的原始问题是使用quote
而不是list
。
答案 2 :(得分:0)
(define newlist `(,(score 'A) ,(score 'A1) ,(score 'A2)))