我有以下函数,它接受一个整数列表并只返回该列表中的偶数。
even_print(List)->
[X||X <- List, even == even_odd(X)].
Run Code Online (Sandbox Code Playgroud)
如何在这样的新行中打印结果:
216> seq_erlang:even_print([2,4,5]).
2
4
Run Code Online (Sandbox Code Playgroud)
而不是这个:
216> seq_erlang:even_print2([2,4,5]).
[2,4]
Run Code Online (Sandbox Code Playgroud)
我io:format("~p~n",X)
在我的列表理解中使用过,但我的变量 X 当然变得未绑定。
即使我注销sts
,我的生成过程也不会停止。如何不使用gen_server停止它?
start() ->
case whereis(sts) of
undefined ->
PidA = spawn(dist_erlang, init,[]),
register(sts, PidA),
{ok,PidA};
_ ->
{ok,whereis(sts)}
end.
stop() ->
case whereis(sts) of
undefined ->
already_stopped;
_ ->
unregister(sts),
stopped,
end.
Run Code Online (Sandbox Code Playgroud) 我有一个评估函数(expr_eval/1),它应该评估一个表达式并返回一个数字.到目前为止,我的函数返回有效数字,如:
expr_eval({plus,{num, 17},{num,10}}) ? 27
Run Code Online (Sandbox Code Playgroud)
但不是这个:
expr_eval({mul,{plus,{num,5},{num,8}},{num,3}}) ? 39
Run Code Online (Sandbox Code Playgroud)
我的职责:
expr_eval({mul, {num,A}, {num,B}}) ->A*B;
expr_eval({plus, {num,A}, {num,B}}) ->A+B;
expr_eval({minus, {num,A},{num,B}}) ->A-B;
expr_eval({_,_,_})->nothing_matched.
Run Code Online (Sandbox Code Playgroud)
我知道它只是按原样采用模式,但我该如何解决这个问题呢?我可以硬编码并将下面的代码添加到我的函数中,上面的方程式可以正常工作,但它不适用于其他方程式.(例如expr_eval({minus,{plus,{num,5},{num,8} },{num,3}})→8)
expr_eval({mul, {plus,{num,A},{num,B}},{num,C}}) ->(A+B)*C;
Run Code Online (Sandbox Code Playgroud)