lol-typing-1.20160822: Language/LOL/Typing/Expr/Grammar.ag
-- vim: syntax=haskell
optpragmas {
{-# LANGUAGE OverloadedStrings #-}
}
module {Language.LOL.Typing.Expr.Grammar} {} {
import Data.Maybe (Maybe(..))
import Text.Show (Show)
import Language.LOL.Typing.Type
import Language.LOL.Typing.Expr.Common
}
data Expr
| Var
name :: Name
| Abst -- ^ Monomorphic bind
sig :: {Maybe Monotype}
name :: Name
body :: Expr
| App
abst :: Expr
arg :: Expr
| Annot
body :: Expr
sig :: Polytype
| Let -- ^ Polymorphic bind
sig :: {Maybe Polytype}
name :: Name
decl :: Expr
body :: Expr
| Where
sig :: {Maybe Polytype}
name :: Name
decl :: Expr
body :: Expr
deriving Expr : Show
data Decl
| Let
sig :: {Maybe Monotype}
name :: Name
decl :: Expr
deriving Decl : Show