相当于OCaml中haskell的zipwith

Jos*_*der 1 ocaml haskell

我有一个'a,and one'列表和一个类型的函数'a -> 'b-> 'c.我正在尝试使用我已经拥有的b将该函数应用于a-list的每个元素,并列出'c.在haskell中,我会做一些类似于zipWith(foobar) a-list (replicate (length a) b). 在OCaml中执行此操作的相同方法?

Pat*_*atJ 8

那么,在你不需要的例子中zipWith,你可以使用一个简单的map:

List.map (fun a -> f a b) a_list
Run Code Online (Sandbox Code Playgroud)

这比List.map2(相当于zipWith)更高效,因为OCaml不像Haskell那样处理列表,因此仅仅为了迭代而构造一个虚拟列表并不值得.


sig*_*ami 7

"List.map2"相当于Haskell的"zipWith"

val map2 : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list
Run Code Online (Sandbox Code Playgroud)

  • 这回答了标题中的措辞,这对未来的访问者很有用. (2认同)