2013-04-28 27 views
0

我創建了一個函數的計算值(方案)的,在一個列表給出了一個項目了一定的成績如何從一系列

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

卻無法獲得創建列表它返回一個(XYZ)列表。 只有

'((score 23) (score 12) (score 7)) 這是隻爲我的變量取代值。

回答

0

當您使用quote(字符')後面沒有評估。因此,在您提供的內容中,三個項目的整個列表未被評估。爲了評估使用list這樣:

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

由於@kmoerman指出,還有其他的方式,利用map,以獲得有效的結果;但是,您原來的問題是使用quote而不是list

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))) 
0
(define newlist `(,(score 'A) ,(score 'A1) ,(score 'A2)))