我正在尝试基于原始列表创建一个新列表,其中列表中的每个元素都包含原始列表中的第一个元素,第二个元素是原始列表中第二个和第三个元素的乘积。
示例:如果原始列表是
(list (list "A" 2 3) (list "B" 3 4)
那么结果将是
(list (list "A" 6) (list "B" 12))
到目前为止,我已经写过:
(define (total-price-list lol)
(cond
[(empty? lol) empty]
[else (list (price-list (first lol))
(price-list (rest lol)))]))
(define (price-list row)
(list (first row) (* (second row) (third row))))
我不知道如何达到想要的结果。有人可以帮我处理我的代码吗?
答案 0 :(得分:1)
地图中的lambda保持第一个元素不变,并将每个子列表的第二个和第三个元素相乘。
(define (total-price-list lol)
(map (λ (l) (list (first l) (* (second l) (third l)))) lol))
(total-price-list (list (list "A" 2 3) (list "B" 3 4)))
; => '(("A" 6) ("B" 12))