Commit c8e61a0
committed
Fix pattern matching to enforce consistent variable bindings (#65)
Pattern variables (e.g. x_) appearing multiple times in a pattern must
bind to the same value. Previously, bindings were merged with extend()
which silently allowed conflicting values, causing expressions like
Sqrt[x] to incorrectly match x_ when it was already bound to x.1 parent 986c16a commit c8e61a0
File tree
2 files changed
+73
-7
lines changed- src/evaluator
- tests/interpreter_tests
2 files changed
+73
-7
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
4 | 28 | | |
5 | 29 | | |
6 | 30 | | |
| |||
332 | 356 | | |
333 | 357 | | |
334 | 358 | | |
335 | | - | |
336 | | - | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
337 | 362 | | |
338 | 363 | | |
339 | 364 | | |
| |||
1412 | 1437 | | |
1413 | 1438 | | |
1414 | 1439 | | |
| 1440 | + | |
1415 | 1441 | | |
1416 | | - | |
1417 | 1442 | | |
1418 | 1443 | | |
1419 | 1444 | | |
| |||
1592 | 1617 | | |
1593 | 1618 | | |
1594 | 1619 | | |
1595 | | - | |
| 1620 | + | |
| 1621 | + | |
| 1622 | + | |
1596 | 1623 | | |
1597 | 1624 | | |
1598 | 1625 | | |
| |||
1639 | 1666 | | |
1640 | 1667 | | |
1641 | 1668 | | |
1642 | | - | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
1643 | 1672 | | |
1644 | 1673 | | |
1645 | 1674 | | |
| |||
1679 | 1708 | | |
1680 | 1709 | | |
1681 | 1710 | | |
1682 | | - | |
| 1711 | + | |
| 1712 | + | |
| 1713 | + | |
1683 | 1714 | | |
1684 | 1715 | | |
1685 | 1716 | | |
1686 | 1717 | | |
1687 | | - | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
1688 | 1721 | | |
1689 | 1722 | | |
1690 | 1723 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
811 | 811 | | |
812 | 812 | | |
813 | 813 | | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
814 | 847 | | |
815 | 848 | | |
816 | 849 | | |
| |||
0 commit comments