1

list.erlに次のコードがあります。

-module(list).
-export([average/1]).

average(X) when list(X) -> sum(X) / len(X).

sum([H|T]) -> H + sum(T);
sum([]) -> 0.

len([_|T]) -> 1 + len(T);
len([]) -> 0.

このモジュールをerlシェルにロードすると、警告メッセージが表示されます。

Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1> c(list).
list.erl:4: Warning: list/1 obsolete
{ok,list}
2>

いつ/なぜこれが起こるのですか? ありがとう。

4

1 に答える 1

1

at Guard を使用する必要がありますis_list(X)

-module(list).
-export([average/1]).

average(X) when is_list(X) -> sum(X) / len(X).

sum([H|T]) -> H + sum(T);
sum([]) -> 0.

len([_|T]) -> 1 + len(T);
len([]) -> 0.
于 2015-11-14T15:49:38.307 に答える