18 lines
368 B
Text
18 lines
368 B
Text
|
|
(* equivalent to (apply map ...) *)
|
||
|
|
let rec mapn f lists =
|
||
|
|
assert (lists <> []);
|
||
|
|
if List.mem [] lists then
|
||
|
|
[]
|
||
|
|
else
|
||
|
|
f (List.map List.hd lists) :: mapn f (List.map List.tl lists)
|
||
|
|
|
||
|
|
let matrix_multiply m1 m2 =
|
||
|
|
List.map
|
||
|
|
(fun row ->
|
||
|
|
mapn
|
||
|
|
(fun column ->
|
||
|
|
List.fold_left (+) 0
|
||
|
|
(List.map2 ( * ) row column))
|
||
|
|
m2)
|
||
|
|
m1
|