SymbolicML/DynamicExpressions.jl

Use StaticArray for children

Opened this issue · 0 comments

I think the generalization to more than 2 children would be best attempted with StaticArrays.MArray. So you could have a field

struct Node{T,N}
    degree::UInt8
    ...
    _children::MVector{Node{T,N},N}
end

The beauty of this is you could still have undefined values (https://discourse.julialang.org/t/how-to-initialize-an-empty-staticarray/69942/11?u=milescranmer) and the max number of children would still be a compile time constant.

And calling children(node) could return a Vector according to the degree of the node. (Though we would still want to have special methods for each degree).

Similarly, for OperatorEnum, it could be a tuple of tuples up to the maximum arity.

@gca30 interested to hear your thoughts