summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs')
-rw-r--r--lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs5
1 files changed, 4 insertions, 1 deletions
diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs
index fd02ebe..e15dc00 100644
--- a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs
+++ b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs
@@ -1,4 +1,5 @@
{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE DeriveAnyClass #-}
module Minilang.Lambda.Parser where
@@ -14,6 +15,8 @@ import qualified Minilang.Lambda.Eval as Eval
import Text.Megaparsec (Parsec, between, empty, errorBundlePretty, parse, some, try)
import Text.Megaparsec.Char (alphaNumChar, char, letterChar, space1, symbolChar)
import qualified Text.Megaparsec.Char.Lexer as L
+import GHC.Generics (Generic)
+import Data.Aeson (ToJSON, FromJSON)
type Parser = Parsec Void Text
@@ -21,7 +24,7 @@ data ParseError = ParseError Text
deriving (Eq, Show)
data AST = Sym Text | Abs [Text] AST | App AST AST [AST]
- deriving (Eq, Show)
+ deriving (Eq, Show, Generic, ToJSON, FromJSON)
desugar :: AST -> Term
desugar = \case