Skip to content

Commit e370862

Browse files
committed
refactor: combine mapreducer
1 parent e9ade74 commit e370862

File tree

1 file changed

+9
-19
lines changed

1 file changed

+9
-19
lines changed

src/base.jl

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -121,23 +121,9 @@ struct TreeMapreducer{
121121
f_on_shared::H
122122
end
123123

124-
function call_mapreducer(mapreducer::TreeMapreducer{2,Nothing}, tree::AbstractNode)
125-
if tree.degree == 0
126-
return mapreducer.f_leaf(tree)
127-
elseif tree.degree == 1
128-
return mapreducer.op(mapreducer.f_branch(tree), call_mapreducer(mapreducer, tree.l))
129-
else
130-
return mapreducer.op(
131-
mapreducer.f_branch(tree),
132-
call_mapreducer(mapreducer, tree.l),
133-
call_mapreducer(mapreducer, tree.r),
134-
)
135-
end
136-
end
137-
function call_mapreducer(mapreducer::TreeMapreducer{2,<:Dict}, tree::AbstractNode)
138-
key = objectid(tree)
139-
is_cached = haskey(mapreducer.id_map, key)
140-
if is_cached
124+
function call_mapreducer(mapreducer::TreeMapreducer{2,ID}, tree::AbstractNode) where {ID}
125+
key = ID <: Dict ? objectid(tree) : nothing
126+
if ID <: Dict && haskey(mapreducer.id_map, key)
141127
result = @inbounds(mapreducer.id_map[key])
142128
return mapreducer.f_on_shared(result, true)
143129
else
@@ -152,8 +138,12 @@ function call_mapreducer(mapreducer::TreeMapreducer{2,<:Dict}, tree::AbstractNod
152138
call_mapreducer(mapreducer, tree.r),
153139
)
154140
end
155-
mapreducer.id_map[key] = result
156-
return mapreducer.f_on_shared(result, false)
141+
if ID <: Dict
142+
mapreducer.id_map[key] = result
143+
return mapreducer.f_on_shared(result, false)
144+
else
145+
return result
146+
end
157147
end
158148
end
159149

0 commit comments

Comments
 (0)