【发布时间】:2015-12-10 01:06:13
【问题描述】:
我有一个关于 Erlang Perms 实现的问题:
perms([]) -> [[]];
perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].
上面的代码来自一本名为Erlang Programming的书,看起来很简单,但运行良好。我感到困惑的是它是如何工作的。比如让我们用perms("12")这样的参数来运行它,那么如果我们分析递归的过程。我认为第一次返回的结果将类似于[[1|perms[2]->[[2]|[[]]]],这等于[[1|[[2]|[[]]]]。但它在 Erlang shell 中是错误的表达方式。
【问题讨论】:
标签: erlang