Files
gyehoek-hs/test/Gyehoek/Test/Scheme/Syntax.hs
T
2026-08-20 17:21:42 -06:00

27 lines
610 B
Haskell

module Gyehoek.Test.Scheme.Syntax where
import Test.Tasty (TestTree, testGroup)
import Test.Tasty.HUnit
import Language.SexpGrammar ()
import Gyehoek.Scheme.Syntax (scm)
import Gyehoek.Scheme.Syntax qualified as Sut
test_root = testGroup "scheme syntax" $
[ freeTree
]
freeTree :: TestTree
freeTree = testGroup "free"
[ testCase "lambda" do
Sut.free' [scm|
(lambda (x y z k) (f x b a))
|] @=? ["f","b","a"]
, testCase "exp" do
Sut.free' [scm|
(letrec ((x (lambda (r) (f a y)))
(y (lambda (r b) (f b x))))
(g x y z))
|] @=? ["f","a","g","z"]
]