Ordered(MatchNode(2, [MatchVar(:a), MatchVar(:b), MatchVar(:c)]), [:a, :b, :c]) is not as efficient as it can be, because it only starts to do anything when there are no holes left, which makes it possible to get things like 3, 2, ?? before the ordered constraint starts to have an effect.
To fix this, we need to:
[ ] Remove any short-circuiting on softfail in all matching functions
[ ] Also enforce the order in the propagate function for LocalOrdered in case of a softfail, for all assigned variables.
Ordered(MatchNode(2, [MatchVar(:a), MatchVar(:b), MatchVar(:c)]), [:a, :b, :c])
is not as efficient as it can be, because it only starts to do anything when there are no holes left, which makes it possible to get things like3, 2, ??
before the ordered constraint starts to have an effect.To fix this, we need to:
softfail
in all matching functionsLocalOrdered
in case of a softfail, for all assigned variables.