Acknowledgements
The original implementation of LazyBroadcast
involved a similar recipe to MultiBroadcastFusion
, which has different yet justified needs for its implementation. Since then, DontMaterialize.jl was developed, which satisfied most needs by LazyBroadcast using a significantly more elegant approach, discussed here. So, we've borrowed that implementation in order to be more consistent with Base.Broadcast
semantics, and provide users with less surprising behavior. We've also kept code_lowered_single_expression
, as this is one feature that DontMaterialize.jl
does not offer (transforming broadcasted Expr
to Expr
).