2016-09-28 57 views
2

我正在學習Haskell中的運算符優先級。整個網絡的一些地方提到,功能應用比運營商具有更高的優先級,但我找不到明確的來源。源代碼的來源:「函數應用比中綴運算符具有更高的優先級」[Haskell]

下面是A Gentle Introduction To Haskell一個這樣的提及:

功能應用程序具有比任何綴運算符

更高的優先級有一個在Haskell 98 Report一節,暗示它:

普通構造函數具有比中綴構造函數更高的優先級

哪裏有確切來源?我希望它被包含在Haskell 98報告中,也許我沒有正確閱讀它。

+0

功能應用程序是一種特殊情況,但一般來說,您可以使用':i'命令在'ghci'上檢查這個權限。例如,':i(。)'會告訴函數組合是正確關聯的,優先級等於9('infixr 9')。 – jarandaf

回答

6

您可以在EBNF找到它here

exp^10 -> ... 
     | fexp 

fexp -> [fexp] aexp 

這基本上意味着功能的應用程序的優先級10,比任何你被允許給運營商更高。

6

哈斯克爾報告本身是一個權威的參考,所以你發現的報價就足夠了。

您還可以在語法中找到相同的信息。

fexp -> [fexp] aexp 
exp_10 -> ... | fexp 

您可以看到函數應用程序優先級爲「10」,而所有中綴/前綴運算符都是9或更低。

+1

沒錯,雖然OP中的具體報告引用似乎指的是_type operators_,而不是價值級別的中綴運算符。 – leftaroundabout

+0

是的,我注意到...然而,這些信息可能對OP而非對我最有幫助。 –