Skip to content

Instantly share code, notes, and snippets.

@davisp
Created March 21, 2022 20:41
Show Gist options
  • Save davisp/6c8a3e0388b7eafd2bfde8959808557f to your computer and use it in GitHub Desktop.
Save davisp/6c8a3e0388b7eafd2bfde8959808557f 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment