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

如何在Racket/Scheme中使用foldl/r添加两个数字的列表,scheme,racket,fold,Scheme,Racket,Fold,我试图使用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 produ

我试图使用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)
))

假设:

  • 您希望在两个输入列表中分别添加prices和taxes元素
  • 产品列表中的产品已正确构建(在您的代码中,它们缺少条形码)
然后,您只需从列表中提取价格和税费,并将它们相加,如下所示:

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

谢谢你的回答!如果两个列表的产品数量不相同,那么相同的代码是否有效?不,在这种情况下,您需要先截断最长的列表,然后再将其传递给@ÓscarLópez程序。。。或使用。:)