BinaryOpNode supports broadcasting of not just scalars, but any length-1 array. However this leads to some errors when using high demensional length one arrays. E.g.,
model = Model()
lhs = model.set(10)
rhs = model.constant([[[0]]])
expr = lhs <= rhs
print(expr.shape())
model.states.resize(1)
with model.lock():
lhs.set_state(0, [0, 1, 2])
print(expr.state().shape)
neither of which are sensible.
Further, because we don't store the shape on the data class we cannot even express the shape correctly in the above example.