Я столкнулся с проблемой в OCaml, где мне нужно выполнить арифметические c операции со списком списков. В качестве параметров я передаю список списков, например [[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.
Я пытался использовать от List.iter
до go через каждого оператора, но я запутался в том, как сопоставить позиции в списке операторов со списком списков.
С учитывая список списков и заданные операторы, результат должен быть [6; 120; -10]
.
Я совершенно новичок в OCaml, извините, если я что-то упустил очень очевидное, любая помощь очень ценится.