OCaml标准库中是否有`flip`功能?

时间:2013-05-18 18:13:24

标签: ocaml

在Haskell中,我们有一个flip函数:flip f x y = f y x,它实际上接受一个函数并返回相同的函数,除了交换两个参数。我想知道OCaml中是否有对应物,因为我找不到它,并且不想每次都重写它。

干杯,

3 个答案:

答案 0 :(得分:14)

标准OCaml库中未定义许多用于通用FP管道的函数。我一直都很想念他们。

然而,现在有很好的OCaml库可以提供大部分或全部这些缺失的功能。 OCaml Batteries Included项目在BatPervasives模块中定义flip。 Jane Street Core项目在Fn模块中定义了flip

答案 1 :(得分:2)

标记的论点可以减轻痛苦:

# let f ~x ~y = x - y;; 
val f : x:int -> y:int -> int = <fun>
# f ~y:5;;
- : x:int -> int = <fun>
# f ~x:6;;
- : y:int -> int = <fun>

因此,如果您愿意写下标签(有些人认为这些标签使代码更具可读性),那么您可以获得所需的行为。这当然取决于具体情况。

答案 2 :(得分:1)

现在included中的git-filter-branch在标准库中。