我创建了一个函数,它为列表中的项目赋予一定的分数
(define newlist '((score 'A ) (score 'A1 ) (score 'A2 )))
但无法让它返回 (XYZ) 列表。仅有的
'((score 23 ) (score 12 ) (score 7 ))
这只是我的变量的替换值。
我创建了一个函数,它为列表中的项目赋予一定的分数
(define newlist '((score 'A ) (score 'A1 ) (score 'A2 )))
但无法让它返回 (XYZ) 列表。仅有的
'((score 23 ) (score 12 ) (score 7 ))
这只是我的变量的替换值。
您可以使用以下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)))
(define newlist `(,(score 'A) ,(score 'A1) ,(score 'A2)))
当您使用quote
(字符'
)时,未评估以下内容。因此,在您提供的内容中,没有评估三个项目的整个列表。评估用途list
:
(define newlist (list (score 'A) (score 'A1) (score 'A2)))
正如@kmoerman 指出的那样,还有其他方法可以使用map
, 来获得有效结果;但是,您最初的问题是使用quote
而不是list
.