on pg。 Programming Erlang, 2nd E中的82,给出了一个示例,用于生成字符串中字符的频率图(实际上适用于计算任何列表中的元素):
-module(count).
-export([count_characters/1]).
count_characters(Str) ->
count_characters(Str, #{}).
count_characters([H|T], #{H := N}=X) ->
count_characters(T, X#{H := N + 1});
count_characters([H|T], X) ->
count_characters(T, X#{H => 1});
count_characters([], X) -> X.
然而,试图编译它会给我:
Erlang/OTP 19 [erts-8.3.5.3] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V8.3.5.3 (abort with ^G)
1> c(..., [{outdir, ...}]).
...
.../count.erl:7: variable 'H' is unbound
error
...
是我遗漏的东西。
这实际上在本书的网站上标注为errata #77244。
这段代码有什么问题?制作频率图的正确方法是什么?