summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lambda-calcul/haskell/minilang.cabal2
-rw-r--r--lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs12
-rw-r--r--lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs9
3 files changed, 23 insertions, 0 deletions
diff --git a/lambda-calcul/haskell/minilang.cabal b/lambda-calcul/haskell/minilang.cabal
index 7c9c266..716951c 100644
--- a/lambda-calcul/haskell/minilang.cabal
+++ b/lambda-calcul/haskell/minilang.cabal
@@ -29,6 +29,7 @@ library
Minilang.Lambda.Unify
Minilang.Lambda.Eval
Minilang.Lambda.Infer
+ Minilang.Lambda.Parser
hs-source-dirs:
src
default-extensions:
@@ -64,6 +65,7 @@ test-suite minilang-test
Minilang.IOSpec
Minilang.Lambda.InferSpec
Minilang.Lambda.EvalSpec
+ Minilang.Lambda.ParserSpec
hs-source-dirs:
test
default-extensions:
diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs
new file mode 100644
index 0000000..719fac2
--- /dev/null
+++ b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs
@@ -0,0 +1,12 @@
+module Minilang.Lambda.Parser where
+
+import Data.Text (Text)
+
+data ParseError = ParseError
+ deriving (Eq, Show)
+
+data AST = Sym Text
+ deriving (Eq, Show)
+
+parse :: Text -> Either ParseError AST
+parse = undefined
diff --git a/lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs b/lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs
new file mode 100644
index 0000000..284c1af
--- /dev/null
+++ b/lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs
@@ -0,0 +1,9 @@
+module Minilang.Lambda.ParserSpec where
+
+import Minilang.Lambda.Parser (AST (..), parse)
+import Test.Hspec (Spec, it, parallel, shouldBe)
+
+spec :: Spec
+spec = parallel $ do
+ it "parses a variable" $ do
+ parse "x" `shouldBe` Right (Sym "x")