Erlang - это язык одного задания.Это означает, что вы не можете присвоить новое значение L
, если значение уже присвоено L
.Когда вы пытаетесь «назначить» новое значение с помощью L = L ++ I
, вы фактически выполняете операцию , соответствующую .Причина, по которой вы видите ошибку no match of right hand side value [1]
, заключается в том, что L
не равно L ++ I
, поскольку L
уже присвоено значение [1]
и оно не соответствует [1,2]
enum(N,L,N) -> L;
enum(N,L,I) ->
io:format("current number: ~w~n", [I]),
L0 = L ++ [I],
enum(N,L0,I+1).
enumFunc(N) -> enum(N,[],1).