summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/test/Minilang/Lambda/DeBruijnSpec.hs
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud@pankzsoft.com>2025-10-28 16:42:28 +0100
committerArnaud Bailly <arnaud@pankzsoft.com>2025-10-28 16:42:28 +0100
commit1c4a175e00e727ac4987f60503bd7dbaeb3f26ad (patch)
tree2f25f43036aa9434b77cb0ea1266118288755460 /lambda-calcul/haskell/test/Minilang/Lambda/DeBruijnSpec.hs
parent1eee551ed24b58ba64d54ea19ffaab1b2821a459 (diff)
downloadlambda-nantes-1c4a175e00e727ac4987f60503bd7dbaeb3f26ad.tar.gz
wip: use de Bruijn indices representation
provide sample complex terms to evaluate
Diffstat (limited to 'lambda-calcul/haskell/test/Minilang/Lambda/DeBruijnSpec.hs')
-rw-r--r--lambda-calcul/haskell/test/Minilang/Lambda/DeBruijnSpec.hs18
1 files changed, 18 insertions, 0 deletions
diff --git a/lambda-calcul/haskell/test/Minilang/Lambda/DeBruijnSpec.hs b/lambda-calcul/haskell/test/Minilang/Lambda/DeBruijnSpec.hs
new file mode 100644
index 0000000..ef8903c
--- /dev/null
+++ b/lambda-calcul/haskell/test/Minilang/Lambda/DeBruijnSpec.hs
@@ -0,0 +1,18 @@
+module Minilang.Lambda.DeBruijnSpec where
+
+import Minilang.Lambda.DeBruijn (DeBruijn (..), eval, toDeBruijn)
+import qualified Minilang.Lambda.Eval as Eval
+import Test.Hspec (Spec, it, shouldBe)
+
+spec :: Spec
+spec = do
+ it "convert term to deBruijn representation" $ do
+ let term = Eval.Lam "x" (Eval.Lam "y" (Eval.Var "x"))
+ deBruijn = toDeBruijn term
+
+ deBruijn `shouldBe` Lam (Lam (Var 1))
+
+ it "evaluates deBruijn term" $ do
+ let term = App (App (Lam (Lam (Var 1))) (Var 12)) (Var 34)
+
+ eval term `shouldBe` Var 12