]> Git — Sourcephile - haskell/symantic.git/blob - Language/Symantic/Expr/Integer.hs
Integer, Integral, Num
[haskell/symantic.git] / Language / Symantic / Expr / Integer.hs
1 {-# LANGUAGE DefaultSignatures #-}
2 {-# LANGUAGE FlexibleContexts #-}
3 {-# LANGUAGE ScopedTypeVariables #-}
4 {-# LANGUAGE TypeFamilies #-}
5 {-# LANGUAGE TypeOperators #-}
6 -- | Expression for 'Integer'.
7 module Language.Symantic.Expr.Integer where
8
9 import Language.Symantic.Type
10 import Language.Symantic.Expr.Root
11 import Language.Symantic.Expr.Error
12 import Language.Symantic.Expr.From
13 import Language.Symantic.Trans.Common
14
15 -- * Class 'Sym_Int'
16 -- | Symantic.
17 class Sym_Integer repr where
18 integer :: Integer -> repr Integer
19 default integer :: Trans t repr => Integer -> t repr Integer
20 integer = trans_lift . integer
21
22 -- * Type 'Expr_Integer'
23 -- | Expression.
24 data Expr_Integer (root:: *)
25 type instance Root_of_Expr (Expr_Integer root) = root
26 type instance Type_of_Expr (Expr_Integer root) = Type_Integer
27 type instance Sym_of_Expr (Expr_Integer root) repr = Sym_Integer repr
28 type instance Error_of_Expr ast (Expr_Integer root) = No_Error_Expr