OCaml 中是否有相当于 Haskell 的
$
运算符,还是我必须依赖括号?例如,参见,
multiplyByFive 5 + 1 -- 26
但是
multiplyByFive $ 5 + 1 -- 30
标准库定义了从右到左的应用程序运算符
@@
let compose h g f x = h @@ g @@ f x
和从左到右的应用运算符
|>
:
let rev_compose f g h x = x |> f |> g |> h
具有预期的关联性(右侧为
@@
,左侧为 |>
)。
您正在寻找
@@
# let multiplyby5 a = 5 * a;;
val multiplyby5 : int -> int = <fun>
# multiplyby5 5 + 1;;
- : int = 26
# multiplyby5 @@ 5 + 1;;
- : int = 30
在 OCaml 中,您可以使用应用程序运算符(在 OCaml 4.01 中添加)来实现相同的目的。
multiplyByFive @@ 5 + 1
- : int = 30
应用程序运算符具有右优先级,因此首先计算运算符的右侧,类似于 Haskell 的应用程序运算符 ($)。您可能还想研究 OCaml 中的管道运算符 (|>),它是一个反向应用运算符,类似于 Haskell 中的 (&) 运算符。