定義・束縛

識別子

1文字目
[a-z_]
2文字目以降
[a-zA-Z0-9_']*
予約語

case , class , data , default , deriving , do
else , if , import , in , infix , infixl , infixr , instance
let , module , newtype , of , then , type , where , _

中項演算子

二項関数 → 中項演算子

x `f` y

中項演算子 → 二項関数

(/$$/) x y

中項演算子の定義

x /$$/ y = 〜

優先順位と結合性
  • 中項演算子の優先度: 1〜9 で指定
  • 普通の関数適用は10で、中項演算よりも強く結合する
infixl 2 <$$>    -- 左結合・優先度2
infixr 3 |||     -- 右結合・優先度3
infix  4 ==      -- 非結合・優先度4

let式

let 変数1 = 定義1
    変数2 = 定義2
    変数3 = 定義3
in 式

where節

  • 複数のガードにまたがって有効
  • 定義やcase式の構文の一部
  • where節自体は式ではなく、値を持たない
定義0
  where
    定義1
    定義2
    定義3
      :