5.1 Curried functions

 例えば,OCamlの加法演算子を引数なしで呼ぶと

(+);;
val it : int -> int -> int =

同じく,HOL Lightの加法の演算子のhol_typeを見ると

type_of `(+)`;;
val it : hol_type = `:num->num->num`

のようと表示されます.これは例えば「x+1」が,x に対して「引数 -> x+引数」という中間の関数を対応させ,その中間の関数による 1 の像として得られることを意味しており,このことは

type_of `(+) x`;;
val it : hol_type = `:num->num`
type_of `(+) x 1`;;
val it : hol_type = `:num`

とすれば確認でき,この内部書式のままの入力でも

`(+) x 1`;;
val it : term = `x + 1`
`(==>) ((=) ((+) x y) z) (P z)`;;
val it : term = `x + y = z ==> P z`

のように出力はこれまで通りのスタイルになります.
 なお,こうした1変数関数への分解は,論理学者Haskell Curryの名から,currying(カリー化)と呼ばれています.