List 获取矩阵的Ocaml函数(如何添加而不使用匹配)

List 获取矩阵的Ocaml函数(如何添加而不使用匹配),list,functional-programming,ocaml,fold,List,Functional Programming,Ocaml,Fold,如何实现可以这样使用的函数sum\u matrix let m = [[1;2;3]; [4;5;6]];; sum_matrix( [[1;2;3]; [4;5;6]]);; 不使用匹配或将列表与空列表进行比较。应该使用折叠 我知道如何通过两个单独的列表来实现这一点,但矩阵方面增加了我不了解的深度。还有,OCaml如何真正接受这样的参数呢?函数 let sum li = List.fold_left (fun acc elem -> acc + elem) 0 li let sum

如何实现可以这样使用的函数
sum\u matrix

let m = [[1;2;3]; [4;5;6]];; 
sum_matrix( [[1;2;3]; [4;5;6]]);;
不使用匹配或将列表与空列表进行比较。应该使用折叠

我知道如何通过两个单独的列表来实现这一点,但矩阵方面增加了我不了解的深度。还有,OCaml如何真正接受这样的参数呢?

函数

let sum li = List.fold_left (fun acc elem -> acc + elem) 0 li
let sum_apply f li = List.fold_left (fun acc elem -> acc + f elem) 0 li
添加列表的所有元素(它们必须是整数)

功能

let sum li = List.fold_left (fun acc elem -> acc + elem) 0 li
let sum_apply f li = List.fold_left (fun acc elem -> acc + f elem) 0 li
计算对输入列表的每个元素应用
f
的总和:
sum\u apply f[x;y;z]
fx+fy+fz
——这也可以使用
sum
list.map
实现


您看到如何组合这两个函数以获得
整数列表中整数的总和了吗?

@amarantshist:提示:您应该传递给
sum\u apply
的函数可能与我的消息中的另一个函数有关。对于如何使用这两个函数,我有点困惑。你能用另一种方式解释一下吗?