Erlang deep clone and recursive map merge

Erlang
-module(deep_merge).
-export([clone/1, merge/2]).

clone(Term) -> binary_to_term(term_to_binary(Term)).

merge(A, B) when is_map(A), is_map(B) ->
    maps:fold(fun(K, VB, Acc) ->
        case Acc of
            #{K := VA} -> Acc#{K => merge(VA, VB)};
            _ -> Acc#{K => clone(VB)}
        end
    end, clone(A), B);
merge(_A, B) ->
    clone(B).