.
[clean-tests.git] / datatype / Tuple.hs
1 {-# LANGUAGE TemplateHaskell #-}
2 {-# LANGUAGE GADTs #-}
3 {-# LANGUAGE DeriveGeneric #-}
4 module Tuple where
5
6 import Printer
7 import Language.GenDSL
8 import Language
9
10 data Tuple a b = Tuple a b
11 $(genDSL 'Tuple)
12
13 data Tuple3 a c = Tuple3 a Int c
14 $(genDSL ''Tuple3)
15
16 data TupleR a b = TupleR {first :: a, second :: b}
17 $(genDSL ''TupleR)
18
19 data List a = Nil | Cons a (List a)
20 $(genDSL ''List)
21
22 data Expr a where
23 Lift :: a -> Expr a
24 Plus :: Expr a -> Expr a -> Expr a
25 Equal :: Expr a -> Expr a -> Expr Bool
26 $(genDSL ''Expr)