Cuando los mapas coinciden con patrones en Erlang, ¿por qué esta variable no está vinculada?

-module(count).
-export([count/1]).

count(L) when is_list(L) ->
  do_count(L, #{});
count(_) ->
  error(badarg).

do_count([], Acc) -> Acc;
do_count([H|T], #{}) -> do_count(T, #{ H => 1 });
do_count([H|T], Acc = #{ H := C }) -> do_count(T, Acc#{ H := C + 1});
do_count([H|T], Acc) -> do_count(T, Acc#{ H => 1 }).

En este ejemplo, la tercera cláusula donde la clave del mapa "H" existe y tiene un recuento asociado, no se compilará. El compilador se queja:

count.erl:11: variable 'H' is unbound    

¿Por qué está H sin consolidar?

Esto funciona por cierto:

do_count([], Acc) -> Acc;
do_count([H|T], Acc) -> do_count(T, maps:update_with(H, fun(C) -> C + 1 end, 1, Acc)).

Pero parece que el patrón coincidedebería para trabajar y no lo hace.

Respuestas a la pregunta(3)

Su respuesta a la pregunta