0

我创建了一个函数,它为列表中的项目赋予一定的分数

(define newlist '((score 'A ) (score 'A1 ) (score 'A2 )))

但无法让它返回 (XYZ) 列表。仅有的

'((score 23 ) (score 12 ) (score 7 )) 这只是我的变量的替换值。

4

3 回答 3

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)))
于 2013-04-28T11:45:55.040 回答
0
(define newlist `(,(score 'A) ,(score 'A1) ,(score 'A2)))
于 2013-04-28T12:34:59.717 回答
0

当您使用quote(字符')时,未评估以下内容。因此,在您提供的内容中,没有评估三个项目的整个列表。评估用途list

  (define newlist (list (score 'A) (score 'A1) (score 'A2)))

正如@kmoerman 指出的那样,还有其他方法可以使用map, 来获得有效结果;但是,您最初的问题是使用quote而不是list.

于 2013-04-28T03:13:13.610 回答