2016-09-28 7 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の特定のレポート引用は、値レベルの中置演算子ではなく_タイプ演算子_を参照しているようです。 – leftaroundabout

+0

はい、私は知っていましたが...情報は私にとってではなくOPに最も役立つかもしれません。 –

関連する問題