gpt4 book ai didi

functional-programming - 关于 erlang 和函数式编程的一个不重要的问题

转载 作者:行者123 更新时间:2023-12-04 08:42:32 26 4
gpt4 key购买 nike

我偶然发现 this question我意识到我在非过程编程课上忘记了很多东西。

当我试图理解代码时,在我看来它非常冗长,所以我试图缩短它。这和原始代码做的事情一样吗?

merge([X|Xs], Ys) -> [X | merge(Ys, Xs)];
merge([], []) -> [].

...我以前从未使用过 erlang,所以我可能犯了一些语法错误 :-)

最佳答案

是的,它工作正常。并且在呈现上更加优雅。但是,如果我学得正确,不使用 Zs 变量作为累加器会使它不是尾递归的,因此效率较低。此外,将反向与累加器一起使用比以正确的顺序将其附加在一起更有效。我相信,这就是为什么原版在某些情况下更合适的原因。但在效率无关紧要的情况下,可读性应该胜过效率。

也许:

merge(Xs, Ys) -> lists:reverse(merge(Xs, Ys, [])).

merge([X|Xs], Ys, Zs) -> merge(Ys, Xs, [X|Zs]);
merge([], [], Zs) -> Zs.

这将把原文的效率与你的简洁易懂结合起来。

关于functional-programming - 关于 erlang 和函数式编程的一个不重要的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1055210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com