【发布时间】:2014-11-09 12:11:17
【问题描述】:
我对 Erlang 有点陌生,但这里是。我想创建一个辅助函数,它采用列表中的最大正整数并返回该值。我在代码中的处理方法如下:
-module(function).
-export([normalize/1]).
normalize(List) -> normalize(List, 0).
normalize([], N) -> N;
normalize([H|T], N) when H > N -> normalize(T, H==N).
我在最后一行不断收到语法错误(怀疑警卫有问题),第一行还有“function normalize/2 is undefined”。我该如何进行这项工作?
【问题讨论】:
-
H==N返回 true 或 false,因此如果您的代码最终调用normalize(T, true),则 true 将被“分配”给 N(实际上是与 N 匹配的模式,并且因为 N 未绑定, N 将被绑定为真)——不是你想要的。