Looking for haskell Answers? Try Ask4KnowledgeBase
Looking for haskell Keywords? Try Ask4Keywords

Haskell Language耐性宣言


構文

  1. インフィックス[整数]オペレーション
  2. infixl [整数]オペレーション
  3. infixr [整数]演算子

パラメーター

宣言コンポーネント意味
infixr オペレータは右結合である
infixl オペレータは左結合
infix 演算子は非結合である
任意の数字演算子のバインディング優先順位(範囲0〜9、デフォルト9)
op1, ... , opn 演算子

備考

演算子と関数を含む式を解析するために、Haskellは固定宣言を使用してかっこがどこに行くかを調べます。順序で、それ

  1. 関数アプリケーションを括弧で囲みます
  2. バインディング優先順位を使用して、同じ優先順位の演算子ですべて分離されたタームのグループをラップします。
  3. これらの演算子の連想性を使って、これらのグループに括弧を追加する方法を見つけます

ここでは、ステップ2の任意のグループの演算子はすべて同じ連想性を持たなければならないことに注意してください。実際には、Haskellはこの条件が満たされていないプログラムを拒否します。

上記のアルゴリズムの例として、 1 + negate 5 * 2 - 3 * 4 ^ 2 ^ 1かっこを追加するプロセスを実行することができます。

infixl 6 +
infixl 6 -
infixl 7 *
infixr 8 ^
  1. 1 + (negate 5) * 2 - 3 * 4 ^ 2 ^ 1
  2. 1 + ((negate 5) * 2) - (3 * (4 ^ 2 ^ 1))
  3. (1 + ((negate 5) * 2)) - (3 * (4 ^ (2 ^ 1)))

Haskell 98レポートのセクション4.4.2の詳細。

耐性宣言 関連する例