在OCaml中有没有Haskell的$运算符的等价物,或者我必须依赖于括号?
$
multiplyByFive 5 + 1 = 26
但是,
multiplyByFive $ 5 + 1 = 30
soat7uwm1#
标准库定义了从右到左的应用程序运算符@@
@@
let compose h g f x = h @@ g @@ f x
以及从左到右应用运算符|>:
|>
let rev_compose f g h x = x |> f |> g |> h
具有预期的关联性(@@为右,|>为左)。
hzbexzde2#
您正在寻找@@
# let multiplyby5 a = 5 * a;; val multiplyby5 : int -> int = <fun> # multiplyby5 5 + 1;; - : int = 26 # multiplyby5 @@ 5 + 1;; - : int = 30
6l7fqoea3#
在OCaml中,你可以使用应用程序操作符(在OCaml 4.01中添加的)来实现同样的操作。
multiplyByFive @@ 5 + 1 - : int = 30
应用程序运算符具有右优先级,因此首先计算运算符的右侧,类似于Haskell的应用程序运算符($)。|〉),这是一个类似于Haskell中的(&)操作符的反向应用操作符。
3条答案
按热度按时间soat7uwm1#
标准库定义了从右到左的应用程序运算符
@@
以及从左到右应用运算符
|>
:具有预期的关联性(
@@
为右,|>
为左)。hzbexzde2#
您正在寻找
@@
6l7fqoea3#
在OCaml中,你可以使用应用程序操作符(在OCaml 4.01中添加的)来实现同样的操作。
应用程序运算符具有右优先级,因此首先计算运算符的右侧,类似于Haskell的应用程序运算符($)。|〉),这是一个类似于Haskell中的(&)操作符的反向应用操作符。