2017-09-11 104 views
0

我试图做一个函数在拍那笔2矩阵,使用地图和运用,问题是,我只用地图这样和矩阵球拍

(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 ¿我怎样才能使用应用得到54而不是结果矩阵?

回答

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