Я читал о том, как работают символические языки, уделяя больше внимания Mathematica. Насколько я понял, для оценки нужно применить последовательность правил преобразования к входным данным до тех пор, пока не будет найдено больше подходящего правила преобразования, и назвать результат его "выходным".
Но затем возникает проблема: что делать, когда заданному выражению соответствует более одного из этих правил преобразования? Я попробовал этот первый пример:
A[x_, 3] := 0;
A[x_, y_] := 1;
A[a, b]
=> 1
A[k, 3]
=> 0
Думаю, я могу объяснить это, сказав, что 3
соответствует 3
«лучше», чем y
. Затем мой второй эксперимент:
B[x_, 3] := 0;
B[4, y_] := 1;
B[4, 3]
=> 0
Почему это? Я ожидал увидеть какую-то ошибку.