2
Я читаю программирования Erlang, когда я ввожу их в Erlang РЕПЛ:Можно ли определить рекурсивную функцию в оболочке Erlang?
perms([]) -> [[]];
perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].
* 1: syntax error before: '->'
Я знаю, что я не могу определить функции таким образом, в оболочке, так что я изменить его на:
2> Perms = fun([]) -> [[]];(L) -> [[H|T] || H <- L, T <- Perms(L--[H])] end.
* 1: variable 'Perms' is unbound
Означает ли это, Я не могу определить рекурсивную функцию внутри оболочки?
возможно дубликат [Определение функций Erlang в оболочке] (HTTP: // StackOverflow .com/questions/2065990/define-erlang-functions-in-the-shell) –
Итак, нет способа определить рекурсивную функцию в оболочке erlang, правильно? – NeoWang
'F = fun F ([X | Xs]) -> [do_something (X) | F (Xs)] end.' Затем назовите его «F (YourXList)». См. [Этот вопрос] (http://stackoverflow.com/questions/867418/how-do-you-write-a-fun-thats -recursive-в-Эрланга). –