次をどう解釈すべきか?
length: ∀α.list(α) → Int
次の例を見ると、
first: ∀α.list(α) → maybe(α)
括弧の付け方は次のようになる。
length: ∀α.(list(α) → Int) first: ∀α.(list(α) → maybe(α))
意味は、
length∈ Πα.([list(α), Int]) first∈ Πα.([list(α), maybe(α)])
ようするに、「コロン → 所属記号、全称記号 → パイ、矢印 → 指数記号」として辻褄があう。
次のような書き方したらどうだろう?
∀α. length: list(α) → Int
あるいは:
For α. length: list(α) → Int
lengthには暗黙の引数 α が渡る気がする。明示すれば
For α. length_α : list(α) → Int
暗黙の引数〈パラメータ〉、明示的引数、隠蔽引数(計算可能なので原則指定しない引数)の問題はよく考える必要がある。課題。