mk: matche keyword pattern fix + classic puzzles
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 52s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 52s
matche-pattern->expr now treats keyword patterns as literals that emit
themselves bare, rather than wrapping in (quote ...). SX keywords
self-evaluate to their string name; quoting them flips them to a
keyword type that does not unify with the bare-keyword usage at the
target site. This was visible only as a test failure on the diffo
clauses below — tightened the pattern rules.
tests/classics.sx exercises three end-to-end miniKanren programs:
- 3-friend / 3-pet permutation puzzle
- grandparent inference over a fact list (membero + fresh)
- symbolic differentiation dispatched by matche on
:x / (:+ a b) / (:* a b)
228/228 cumulative.
This commit is contained in:
@@ -166,6 +166,13 @@ _(none yet)_
|
||||
|
||||
_Newest first._
|
||||
|
||||
- **2026-05-08** — **Classic puzzles + matche keyword fix**: matche now emits
|
||||
keywords bare in the pattern->expr conversion so they self-evaluate to their
|
||||
string name and unify with the same-keyword target value (instead of becoming
|
||||
a quoted-keyword type). New `tests/classics.sx`: pet permutation puzzle,
|
||||
parent/grandparent inference over a fact list, symbolic differentiation
|
||||
driven by matche dispatch on `:x` / `(:+ a b)` / `(:* a b)` patterns.
|
||||
6 new tests, 228/228 cumulative.
|
||||
- **2026-05-08** — **Phase 5 piece D — matche, Phase 5 done**: pattern matching
|
||||
macro (`lib/minikanren/matche.sx`) — symbols become fresh vars, atoms become
|
||||
literals, lists recurse positionally, repeated names unify. 14 new tests
|
||||
|
||||
Reference in New Issue
Block a user