如何实现一个sum_matrix
可以这样使用的功能?
let m = [[1;2;3]; [4;5;6]];;
sum_matrix( [[1;2;3]; [4;5;6]]);;
不使用匹配,或将列表与空列表进行比较。应该使用折叠。
我了解如何使用两个单独的列表来做到这一点,但矩阵方面增加了我不理解的深度。此外,OCaml 是如何真正接受这样的参数的?
如何实现一个sum_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
计算应用于f
输入列表的每个元素的总和:sum_apply f [x;y;z]
is f x + f y + f z
- 这也可以使用sum
and来实现List.map
。
你知道如何结合这两个函数来得到一个整数的总和int list list
吗?