如何在 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)))
我正在尝试使用 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)))