Erlang 求值表达式

Erlang 求值表达式,erlang,Erlang,我正在做一些过去的论文,我想知道我在这里是否正确 对下列表达式进行逐步求值: foo(0,[2,3,1]) foo(0,[4,0,1]) 其中,foo的定义如下: foo(_,[]) -> []; foo(Y,[X|_]) when X==Y -> [X]; foo(Y,[X|Xs]) -> [X | foo(Y,Xs) ]. 我的答案是: 一, 二, 我说的对吗?至少函数参数是错误的,我会说: 1. foo(0,[2,3,1]) [2|foo(0,[3,1])]

我正在做一些过去的论文,我想知道我在这里是否正确

对下列表达式进行逐步求值:

foo(0,[2,3,1])
foo(0,[4,0,1])
其中,foo的定义如下:

foo(_,[]) -> [];
foo(Y,[X|_]) when X==Y -> [X];
foo(Y,[X|Xs]) -> [X | foo(Y,Xs) ].
我的答案是:

一,

二,


我说的对吗?

至少函数参数是错误的,我会说:

1.

foo(0,[2,3,1])
[2|foo(0,[3,1])]        % 3rd clause
[2|[3|foo(0,[1])]]      % 3rd clause
[2|[3|[1|foo(0,[])]]]   % 3rd clause
[2|[3|[1|[]]]]          % 1st clause
[2,3,1]

2.

foo(0,[4,0,1])
[4|foo(0,[0,1])]        % 3rd clause
[4|[0]]                 % 2nd clause
[4, 0]

你认为这个函数做什么?我把它理解为删除所有“Y”的实例。在本例中,all zero elements.foolem,List返回List的一个副本,其中删除了Elem之后的所有元素。
Foo(0, [4, 0, 1])
[4 | foo(0, 0,1])
[4, 0]
1.

foo(0,[2,3,1])
[2|foo(0,[3,1])]        % 3rd clause
[2|[3|foo(0,[1])]]      % 3rd clause
[2|[3|[1|foo(0,[])]]]   % 3rd clause
[2|[3|[1|[]]]]          % 1st clause
[2,3,1]

2.

foo(0,[4,0,1])
[4|foo(0,[0,1])]        % 3rd clause
[4|[0]]                 % 2nd clause
[4, 0]