簡體   English   中英

Haskell中綴函數應用程序優先級

[英]Haskell infix function application precedence

fxy = x * y 我們可以用兩種方式應用這個函數: f 5 6 ,或者,使用中綴符號, 5 `f` 6 運算符規則是否適用於最后一個表達式? 這個應用程序有什么優先權? 它只是另一種形式的功能應用程序,它也具有最高優先級嗎?

我想編譯器會看到這種特殊形式(由於``和/或名稱以字母(?)開頭),並且實際上將其視為普通函數應用程序,而不是將其視為運算符。

Haskell 98報告中有一個關於運算符應用程序的部分可以清除它:

運算符是運算符符號,例如+或$$,或者是用重寫符(反引號)括起來的普通標識符,例如`op`。 例如,不是編寫前綴應用程序op xy,而是可以編寫中綴應用程序x`op`y。 如果沒有為'op`給出固定聲明,那么它默認為最高優先級和左關聯性(參見第4.4.2節)。

如其他答案所示,報告還有一個關於Fixity聲明的部分,允許您定義自己的固定性,例如:

infixl 7 `op`

如果沒有給出明確的固定性聲明,例如

infixl 7 `quot`

反向中綴函數具有infixl 9的默認固定性,因此將被視為具有相同固定性的任何其他中綴運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM