这个 Elm 斐波那契数列的例子需要进行记忆化吗?

4

4
「懒惰求值是否会处理这个问题」<- Elm 没有懒惰求值 - robertjlooby
1个回答

5

浏览编译后的源代码(截至Elm 0.18版本),您将看到Elm代码被转译为以下JavaScript代码(变量名称可能不同)。

var _user$project$Temp1483721371847322$fib = function (n) {
    var _p0 = n;
    switch (_p0) {
        case 0:
            return 1;
        case 1:
            return 1;
        default:
            return _user$project$Temp1483721371847322$fib(n - 1) + _user$project$Temp1483721371847322$fib(n - 2);
    }
};

Javascript不会自动进行记忆化,因为函数调用不能保证是确定性的。如果您需要记忆化,您将不得不自行实现。


啊!谢谢!像往常一样,Elm 映射到 JavaScript,但它没有其他语言所拥有的这些优化。 - john mangual

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接