Skip to content

Instantly share code, notes, and snippets.

@davisp
Created March 21, 2022 21:11
Show Gist options
  • Save davisp/036e969f8666563f4d9bfbb449993d79 to your computer and use it in GitHub Desktop.
Save davisp/036e969f8666563f4d9bfbb449993d79 to your computer and use it in GitHub Desktop.
-module(func).
-export([go/4]).
%go(Child, Acc, Depth, Limit) ->
% {SeenAcc, LimitPosAcc, ChildAcc, BranchAcc} = Acc,
% case couch_key_tree:stem_tree(Depth + 1, Child, Limit, SeenAcc) of
% {NewSeenAcc, LimitPos, NewChild, NewBranches} ->
% NewLimitPosAcc = erlang:max(LimitPos, LimitPosAcc),
% NewChildAcc = [NewChild | ChildAcc],
% NewBranchAcc = NewBranches ++ BranchAcc,
% {NewSeenAcc, NewLimitPosAcc, NewChildAcc, NewBranchAcc};
% {NewSeenAcc, LimitPos, NewBranches} ->
% NewLimitPosAcc = erlang:max(LimitPos, LimitPosAcc),
% NewBranchAcc = NewBranches ++ BranchAcc,
% {NewSeenAcc, NewLimitPosAcc, ChildAcc, NewBranchAcc}
% end.
go(Child, Acc, Depth, Limit) ->
SeenAcc = element(1, Acc),
case couch_key_tree:stem_tree(Depth + 1, Child, Limit, SeenAcc) of
{NewSeenAcc, LimitPos, NewChild, NewBranches} ->
NewLimitPosAcc = erlang:max(LimitPos, element(2, Acc)),
NewChildAcc = [NewChild | element(3, Acc)],
NewBranchAcc = NewBranches ++ element(4, Acc),
{NewSeenAcc, NewLimitPosAcc, NewChildAcc, NewBranchAcc};
{NewSeenAcc, LimitPos, NewBranches} ->
NewLimitPosAcc = erlang:max(LimitPos, element(2, Acc)),
NewBranchAcc = NewBranches ++ element(4, Acc),
{NewSeenAcc, NewLimitPosAcc, element(3, Acc), NewBranchAcc}
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment