Haskellは識別子と演算子記号を区別します。識別子は英数字とプラス'
であり、それ自体が有効な用語です。したがって、識別子prefix
に関数型がある場合は、として呼び出すことができますprefix arg1 arg2
。演算子名は一連の記号であり、と呼ばれarg1 !&$ arg2
ます。1 ただし、識別子を中置演算子として使用したり、中置演算子を識別子として扱いたい場合があります。したがって、プレフィックス関数名を`
sで囲むと、それは演算子になり、中置として使用できます(必須)arg1 `prefixFunc` arg2
。逆に、中置演算子名を括弧で囲むと、構文的に有効になるため、接頭辞形式で呼び出すことができます(!&$) arg1 arg2
。2
変数の型シグネチャを宣言するときは、変数の名前を識別子として指定する必要があります。3の ような通常の関数名の場合xor
、それは単なる名前です。のような演算子の場合&&
、前述のように括弧で囲みます。これが、を記述する理由です(&&) :: Bool -> Bool -> Bool
。したがって、あなたは書くだろう
xor :: Bool -> Bool -> Bool
True `xor` False = True
False `xor` True = True
True `xor` True = False
False `xor` False = False
2つの変更を加える必要があることに注意してください。定義行のバッククォートを省略した場合は、パターンマッチングを実行しようとしているようになります。True
これは、2つの引数をとるコンストラクターのように見えxor
、最初の引数になります。4
(また、キックのためだけに、より短い定義: xor = (/=)
:-))
1字句構造は§2.4にあります
2式の構造は§3.2にあります。
3型シグネチャの構造は§4.4.1にあり、§3.2のvarの定義を参照しています。
4バインディングの構造は§4.4.3にあります。