{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE GADTs #-}
{-# LANGUAGE DeriveGeneric #-}
module Tuple where
import Printer
-import Compiler
-import Interpreter
import Language.GenDSL
import Language
data Tuple a b = Tuple a b
-$(genDSL ''Tuple)
+$(genDSL 'Tuple)
data Tuple3 a c = Tuple3 a Int c
$(genDSL ''Tuple3)
data List a = Nil | Cons a (List a)
$(genDSL ''List)
+
+data Expr a where
+ Lift :: a -> Expr a
+ Plus :: Expr a -> Expr a -> Expr a
+ Equal :: Expr a -> Expr a -> Expr Bool
+$(genDSL ''Expr)