如何从一系列计算值(方案)创建列表

时间:2013-04-28 03:04:59

标签: scheme

我创建了一个功能,可以为列表中的项目提供某个分数

  

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

但无法让它返回(X Y Z)列表。 只有

  

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

3 个答案:

答案 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)))