如何在 Racket/Scheme 中使用 foldl/r 添加两个数字的列表

How to add a list of two numbers using foldl/r in Racket/Scheme

我正在尝试使用 foldl/r 添加两个结构的两个列表,但我无法添加这两个列表。我附上了下面的代码

(define-struct product-list (barcode expiry price ))
(define-struct tax-list (barcode tax))

(define (total-price products taxes)
(foldr 
+ (product-list-price products) (tax-list-tax taxes)))

(define products (list 
(make-product-list 1500 85)
(make-product-list 1501 30)
(make-product-list 1502 200)
(make-product-list 1503 15)
(make-product-list 1504 100)
))

(define taxes (list
(make-tax-list 1500 5)
(make-tax-list 1501 2)
(make-tax-list 1502 12)
(make-tax-list 1503 0)
(make-tax-list 1504 6)
))

假设:

  • 您想在两个输入列表中按元素添加价格和税金
  • 产品列表中的产品已正确构建(在您的代码中,它们缺少条形码)

然后,您只需从列表中提取价格和税金并将它们相加,如下所示:

(define (total-price products taxes)
  (foldr
   +
   0
   (map product-list-price products)
   (map tax-list-tax taxes)))