1. 程式人生 > >Haskell語言學習筆記(77)fix

Haskell語言學習筆記(77)fix

fix 被調用 一個 func ask 定義 調用 ... 就是

fix

fix 是一個在 Data.Function 中定義的函數,主要用於定義不動點函數。

fix :: (a -> a) -> a
fix f = let x = f x in x

fix 函數的定義使用了遞歸綁定,比較難以理解:

fix f
= let x = f x in x
= let x = f x in f x
= let x = f x in f (f x)
= let x = f x in f (f (f x))
= let x = f x in f (f .. (f (f x)) ..)
= let x = f x in f . f . ... . f . f $ x

即 fix 函數的實質是無限多次調用函數 f,直至函數 f 結束遞歸並產生一種能被自身調用的數據結構。
這裏的最終參數 x 是一個永遠不會被調用的參數,也就是一個占位符。

Haskell語言學習筆記(77)fix