如何使用Fun在一行中表示此子句.
perms([]) -> [[]];
perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].
Run Code Online (Sandbox Code Playgroud)
我相信你所寻求的是一种"自我递归"的乐趣.
有趣的语法无法在有趣的体内引用自身,因此需要使用一种技巧,其中调用的乐趣是参数.这通常被称为ycombinator.
一些示例代码可能会更好地描述它:
permutator() ->
fun
([], _F) ->
[[]];
(L, F) ->
[ [H|T] || H <- L, T <- F(L--[H], F)]
end.
do_permutate(L) ->
P = permutator(),
P(L, P).
Run Code Online (Sandbox Code Playgroud)
你可以看到这很尴尬.如果你只是想参考你的perms函数,你可以使用代码:fun perms/1.