相当于 OCaml 中 Haskell 的 $ 运算符

问题描述 投票:0回答:3

OCaml 中是否有相当于 Haskell 的

$
运算符,还是我必须依赖括号?例如,参见,

multiplyByFive 5 + 1 -- 26

但是

multiplyByFive $ 5 + 1 -- 30
haskell ocaml operator-precedence
3个回答
15
投票

标准库定义了从右到左的应用程序运算符

@@

let compose h g f x = h @@ g @@ f x

和从左到右的应用运算符

|>
:

let rev_compose f g h x = x |> f |> g |> h

具有预期的关联性(右侧为

@@
,左侧为
|>
)。


7
投票

您正在寻找

@@

# let multiplyby5 a = 5 * a;;
val multiplyby5 : int -> int = <fun>
# multiplyby5 5 + 1;;
- : int = 26
# multiplyby5 @@ 5 + 1;;
- : int = 30

7
投票

在 OCaml 中,您可以使用应用程序运算符(在 OCaml 4.01 中添加)来实现相同的目的。

multiplyByFive @@ 5 + 1
- : int = 30

应用程序运算符具有右优先级,因此首先计算运算符的右侧,类似于 Haskell 的应用程序运算符 ($)。您可能还想研究 OCaml 中的管道运算符 (|>),它是一个反向应用运算符,类似于 Haskell 中的 (&) 运算符。

© www.soinside.com 2019 - 2024. All rights reserved.