总和矩阵球拍

时间:2017-09-11 17:59:01

标签: matrix racket

我正在尝试在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而不是结果矩阵?

1 个答案:

答案 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