相关疑难解决方法(0)

什么"浮出来"是什么意思?

Haskell维基上,我读到了这个:

fib =
    let fib' 0 = 0
        fib' 1 = 1
        fib' n = fib (n - 1) + fib (n - 2)
    in  (map fib' [0 ..] !!)
Run Code Online (Sandbox Code Playgroud)

比这更有效:

 fib x =
    let fib' 0 = 0
        fib' 1 = 1
        fib' n = fib (n - 1) + fib (n - 2)
    in  map fib' [0 ..] !! x
Run Code Online (Sandbox Code Playgroud)

因为,"在第二种情况下,fib'是(重新)为每个参数x定义的,因此它不能浮出来."

我不明白这意味着什么.

  1. 什么"浮出来"是什么意思?它是如何优化的?
  2. 为什么fib'要为每次调用重新定义fib
  3. 这是eta扩张吗?

haskell

24
推荐指数
2
解决办法
1145
查看次数

标签 统计

haskell ×1