据我所知,只有当你调用一个递归函数作为最后一个语句时,Tail call optimisation才能工作。下面是我的两个示例,我不确定这两个示例是否都对尾部调用进行了优化。使用中间结果变量 do_map(list,fun,[]) defp do_map([],_fun,result) do end
defp do_map([h|t],fun<
当我在Erlang中输入这些内容时,我正在阅读编程erlang:perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].我知道不能以这种方式在shell中定义函数,所以我将其更改为:
2> Perms = fun([]) -> [[]];(L) -> [[H|T] || H <- L, T <- P