今回圏論の話は出ません。 関数型言語勉強の中に、不動点コンビネータは避けては通れない道ですね。不動点とかなんとなく難しい印象がありますが、意外に簡単です。以下は定義(Wikipediaから): 関数 f の不動点とは、関数 f(x) = x を満たすような x のことという。 不動点コンビネータ fix とは、下記のように関数 f の不動点を返すような高階関数 fix のこと。 fix(f) = f(fix(f)) 不動点は中学の連立方程式の知識さえあれば誰でも計算できるんだろう: f(x) = x f(x) = 42 => x = 42 f(x) = x f(x) = x^2 => x^2 - x = 0 => x(x - 1) = 0 => x = 0 or x = 1 そして不動点コンビネータはこの不動点を計算してくれる関数のこと。全然難しくないでしょう? Haskellでは遅延評価
![Arrowの話をしよう (2)不動点と再帰 - haxis_fxの日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/8d56545cde56442044c6869db231d08e736ed0de/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fh%2Fhaxis_fx%2F20110726%2F20110726125155.png)