我正在尝试在Racket中做一个求和2矩阵的函数,使用map和apply,问题是我只使用了这样的地图
(define (sumM x y)
(map(lambda (x y) (map + x y)) x y))
(sumM '((10 10 10) (5 5 5)) '((1 1 1) (2 2 2)))
它给了我:(sumM '((10 10 10) (5 5 5)) '((1 1 1) (2 2 2))) ->'((11 11 11) (7 7 7))
但问题是:我只想要结果,比如54 ¿如何使用apply来获取54而不是结果矩阵?
答案 0 :(得分:2)
试试这个:
(define (sumM x y)
(+ (apply + (map (lambda (sl) (apply + sl)) x))
(apply + (map (lambda (sl) (apply + sl)) y))))
它适用于任意长度的列表列表,查找其所有元素的总和。例如:
(sumM '((10 10 10) (5 5 5)) '((1 1 1) (2 2 2)))
=> 54