Changed my mind on the basic syntax; less Haskell, more C.

This commit is contained in:
2011-01-06 23:37:31 -08:00
parent 3f14f02eb3
commit 29a358a76a
6 changed files with 301 additions and 141 deletions

View File

@@ -26,14 +26,25 @@ data ImportName = ImportNamed QualifiedName
deriving (Show)
data Show a => Decl a =
DeclData [Type] QualifiedName [QualifiedName] [DataClause]
| DeclType
| DeclNewtype
| DeclClass
| DeclInstance
| DeclValue Type QualifiedName (Expr a)
DeclData a [Type] QualifiedName [QualifiedName] [DataClause]
| DeclType a [Type]
| DeclNewtype a [Type]
| DeclClass a [Type]
| DeclInstance a [Type]
| DeclValue a [Type] Type QualifiedName [Stmt a]
| DeclExport a (Decl a)
deriving (Show)
addTypeRestrictions :: Show a => [Type] -> Decl a -> Decl a
addTypeRestrictions rs (DeclData s _ a b c) = DeclData s rs a b c
addTypeRestrictions rs (DeclType s _) = DeclType s rs
addTypeRestrictions rs (DeclNewtype s _) = DeclNewtype s rs
addTypeRestrictions rs (DeclClass s _) = DeclClass s rs
addTypeRestrictions rs (DeclInstance s _) = DeclInstance s rs
addTypeRestrictions rs (DeclValue s _ a b c) = DeclValue s rs a b c
addTypeRestrictions rs (DeclExport s d) =
DeclExport s (addTypeRestrictions rs d)
data DataClause = DataClause QualifiedName [Type]
deriving (Show)
@@ -46,6 +57,12 @@ data Show a => Expr a =
| Lambda a [QualifiedName] (Expr a)
deriving (Show)
data Show a => Stmt a =
SExpr a (Expr a)
| SBind a QualifiedName (Stmt a)
| SCase a
deriving (Show)
data Kind = Star | KFun Kind Kind
deriving (Eq,Show)