less prototype, less bad code implementation of CCHM type theory
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
module Presyntax.Presyntax where
|
|
|
|
|
|
import Data.Text (Text)
|
|
|
|
data Plicity
|
|
= Im | Ex
|
|
deriving (Eq, Show, Ord)
|
|
|
|
data Expr
|
|
= Var Text
|
|
|
|
| App Plicity Expr Expr
|
|
| Pi Plicity Text Expr Expr
|
|
| Lam Plicity Text Expr
|
|
|
|
| Sigma Text Expr Expr
|
|
| Pair Expr Expr
|
|
| Proj1 Expr
|
|
| Proj2 Expr
|
|
|
|
| Span Expr Posn Posn
|
|
deriving (Eq, Show, Ord)
|
|
|
|
data Statement
|
|
= Decl [Text] Expr
|
|
| Defn Text Expr
|
|
| Builtin Text Text
|
|
|
|
| ReplNf Expr -- REPL eval
|
|
| ReplTy Expr -- REPL :t
|
|
|
|
| SpanSt Statement Posn Posn
|
|
deriving (Eq, Show, Ord)
|
|
|
|
data Posn
|
|
= Posn { posnLine :: {-# UNPACK #-} !Int
|
|
, posnColm :: {-# UNPACK #-} !Int
|
|
}
|
|
deriving (Eq, Show, Ord)
|