13

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

干杯,

4

3 回答 3

18

标准 OCaml 库中没有定义许多像这样用于通用 FP 管道的函数。我一直很想念他们。

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

于 2013-05-18T18:34:58.503 回答
4

带标签的论点在一定程度上减轻了痛苦:

# 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>

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

于 2013-08-08T22:28:03.133 回答
4

现在包含Fun.flip在标准库中。

于 2019-11-19T19:52:45.187 回答