SICP : Ex1.35
これは、数列の不動点の近似値を求めるという問題。与えられた式から黄金比の近似値を求めた。
回答
この問題もConcurrent Cleanを使って回答します。
Start :: Real Start = fixed_point (\x = 1.0 + 1.0 / x) 1.0 tolerance =: 0.0000000001 fixed_point f first_guess = try first_guess where close_enough a b = tolerance > (abs $ a - b) try guess # next = f guess | close_enough guess next = next = try next
感想
不動点と聞いて、memoizeの一連の記事(memoizeを検索)を思い出したのですが、あっちは関数列の不動点を求める問題で、こっちは数列の不動点の近似値を求める問題。だから、中身も違います。