不動点と不動点コンビネータ
ある関数 について、
となる
が存在するとき、
を
の不動点といいます。
また、 に十分近い
に対し、列
が
に収束するとき、
は
の吸引的不動点である、といいます。
(参考:Wikipedia)
吸引的不動点は、値が変化しなくなるまで関数適用を繰り返すだけなので、プログラムで簡単に書くことができます。
以下のfixは初期値xからfの吸引的不動点を求める関数です。
汎用性のため、一致検査関数はequalとして引数で取ります。
let rec fix equal f x = let x' = f x in if equal x x' then x else fix equal f x' |