use*_*478 2 ocaml multidimensional-array map-function
let lst = [[1;2;3];[4;5;6]];;
Run Code Online (Sandbox Code Playgroud)
如何在OCaml中使用2D数组中的map函数(列表是不可变的),这样我可以对每个元素进行平方并得到: -
lst = [[1;4;9];[16;25;36]];;
Run Code Online (Sandbox Code Playgroud)
您可以通过使用两次来编写mapmap : ('a -> 'b) -> 'a list list -> 'b list list与常规类似的map : ('a -> 'b) -> 'a list -> 'b list方法map:
(* Apply 'List.map f' to each xs in xss *)
let mapmap f xss = List.map (fun xs -> List.map f xs) xss
(* Written a bit shorter *)
let mapmap f = List.map (List.map f)
Run Code Online (Sandbox Code Playgroud)
然后写成square : int list list -> int list list:
let square = mapmap (fun x -> x*x)
Run Code Online (Sandbox Code Playgroud)