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
的函数可能与我的消息中的另一个函数有关。对于如何使用这两个函数,我有点困惑。你能用另一种方式解释一下吗?