【发布时间】:2020-04-10 16:04:33
【问题描述】:
我在 OCaml 中遇到了一个问题,我需要对列表执行算术运算。作为参数,我传递了列表列表,例如[[1;2;3]; [4;5;6]];,以及像['+'; '*'; '-'] 这样的字符列表。
这是我目前所拥有的:
let addition = List.map (List.fold_left ( + ) 0);;
let multiplication = List.map (List.fold_left ( * ) 0);;
let subtraction = List.map (List.fold_left ( - ) 0);;
let list = [[1;2;3]; [4;5;6]; [7;8;9]];;
let operators = ['+'; '*'; '-'];;
let rec rows l o =
match (l, o) with
([], []) -> []
(hd::tl, op::tlo) ->
(
match hd with
[] -> 0::(rows tl tlo)
h::t ->
这是缺少的部分,我不知道如何将第一个运算符与列表列表中的第一个列表匹配,将第二个运算符与第二个列表列表匹配等等,并对元素执行操作在列表中。
我尝试使用List.iter 遍历每个运算符,但我对如何将运算符列表中的位置与列表列表进行匹配感到困惑。
使用给定的列表列表和给定的运算符,结果应该是[6; 120; -10]。
我是 OCaml 的新手,如果我错过了一些非常明显的东西,我很抱歉,非常感谢任何帮助。
【问题讨论】:
-
如果您是 OCaml 的新手,那么您应该查看这个更适合讨论的链接:discuss.ocaml.org
标签: list matrix iteration ocaml