我創建了一個函數的計算值(方案)的,在一個列表給出了一個項目了一定的成績如何從一系列
(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))
這是隻爲我的變量取代值。
當您使用quote
(字符'
)後面沒有評估。因此,在您提供的內容中,三個項目的整個列表未被評估。爲了評估使用list
這樣:
(define newlist (list (score 'A) (score 'A1) (score 'A2)))
由於@kmoerman指出,還有其他的方式,利用map
,以獲得有效的結果;但是,您原來的問題是使用quote
而不是list
。
您可以使用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)))