在Haskell wiki I read that this:「浮出」是什麼意思?
fib =
let fib' 0 = 0
fib' 1 = 1
fib' n = fib (n - 1) + fib (n - 2)
in (map fib' [0 ..] !!)
的效率比該:
fib x =
let fib' 0 = 0
fib' 1 = 1
fib' n = fib (n - 1) + fib (n - 2)
in map fib' [0 ..] !! x
因爲,「在用於每個參數x被(重新)限定的第二殼體FIB」,因而它不能被漂走了。「
我不明白這是什麼意思。
- 「浮出」是什麼意思?它是如何優化?
- 爲什麼
fib'
被重新定義爲每次調用fib
? - 這是一個eta擴展與否?
這個答案和Daniel Fischer的答案現在是相互遞歸的。 – misterbee 2012-02-22 23:20:45
@misterbee:幸運的是,只有Haskell程序員會閱讀它們,而我們很懶,對吧? – leftaroundabout 2012-03-23 12:57:19