在Haskell中,我们有一个flip
函数:flip f x y = f y x
,它实际上接受一个函数并返回相同的函数,除了交换两个参数。我想知道OCaml中是否有对应物,因为我找不到它,并且不想每次都重写它。
干杯,
答案 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
在标准库中。