split out unhygienic toy model

This commit is contained in:
msyds committed 2026-09-18 08:12:08 -06:00
1 parent d7d18472c9
commit 70ac846051
4 files changed
+136 -139

No files matched your search

-27
View File
@@ -104,30 +104,3 @@
'(syntax-rules
()
((m) 123)))))
(t/deftest unify-test
(t/are [result pattern datum] (= result (sut/unify pattern datum))
{'a 123 'b 456} '(a b) '(123 456)
nil '(a b) 123
'{b [:ellipsis ([:ellipsis (1 2)] [:ellipsis (3 4)])]}
'((b ...) ...)
'((1 2) (3 4))
{} '_ 123)
(t/testing "non-matches"
(t/are [pattern datum] (= nil (sut/unify pattern datum))
'(a b c) '(1 2)
'(a b c) '(1 2))))
(t/deftest transcribe-test
(t/are [result datum pattern template]
(= result (sut/transcribe (sut/unify pattern datum) template))
'(1 a 2 b) '((1 2) (a b))
'((x y) ...) '(x ... y ...)
'(1 2 3 4) '(1 2 3 4)
'(x ...) '(x ...)
'(concat (1 2) (3 4) (5 6)) '((1 2) (3 4) (5 6))
'((a ...) ...) '(concat (a ...) ...)))
+30
View File
@@ -0,0 +1,30 @@
(ns unhygienic-test
(:require [unhygienic :as sut]
[clojure.test :as t]))
(t/deftest unify-test
(t/are [result pattern datum] (= result (sut/unify pattern datum))
{'a 123 'b 456} '(a b) '(123 456)
nil '(a b) 123
'{b [:ellipsis ([:ellipsis (1 2)] [:ellipsis (3 4)])]}
'((b ...) ...)
'((1 2) (3 4))
{} '_ 123)
(t/testing "non-matches"
(t/are [pattern datum] (= nil (sut/unify pattern datum))
'(a b c) '(1 2)
'(a b c) '(1 2))))
(t/deftest transcribe-test
(t/are [result datum pattern template]
(= result (sut/transcribe (sut/unify pattern datum) template))
'(1 a 2 b) '((1 2) (a b))
'((x y) ...) '(x ... y ...)
'(1 2 3 4) '(1 2 3 4)
'(x ...) '(x ...)
'(concat (1 2) (3 4) (5 6)) '((1 2) (3 4) (5 6))
'((a ...) ...) '(concat (a ...) ...)))