Ракетка - Создать новый список на основе данного списка - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь создать новый список на основе исходного списка, где каждый элемент списка содержит первый элемент из исходного списка, а второй элемент является произведением второго и третьего элемента из исходного списка.

Пример: если исходный список равен

(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))))

Я не знаю, как достичь желаемого результата. Может ли кто-нибудь помочь мне с моим кодом?

1 Ответ

1 голос
/ 27 октября 2019

Лямбда в карте сохраняет первый элемент как есть и умножает второй и третий элемент каждого подсписка.

(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))
...