{- | Module : $Header$ Description : Representation of annotated FlatCurry. Copyright : (c) 2016 - 2017 Finn Teegen License : BSD-3-clause Maintainer : bjp@informatik.uni-kiel.de Stability : experimental Portability : portable TODO -} module Curry.FlatCurry.Annotated.Type ( module Curry.FlatCurry.Annotated.Type , module Curry.FlatCurry.Type ) where import Curry.FlatCurry.Type ( QName, VarIndex, Visibility (..), TVarIndex , TypeDecl (..), OpDecl (..), Fixity (..) , TypeExpr (..), ConsDecl (..) , Literal (..), CombType (..), CaseType (..) ) data AProg a = AProg String [String] [TypeDecl] [AFuncDecl a] [OpDecl] deriving (Eq, Read, Show) data AFuncDecl a = AFunc QName Int Visibility TypeExpr (ARule a) deriving (Eq, Read, Show) data ARule a = ARule a [(VarIndex, a)] (AExpr a) | AExternal a String deriving (Eq, Read, Show) data AExpr a = AVar a VarIndex | ALit a Literal | AComb a CombType (QName, a) [AExpr a] | ALet a [((VarIndex, a), AExpr a)] (AExpr a) | AFree a [(VarIndex, a)] (AExpr a) | AOr a (AExpr a) (AExpr a) | ACase a CaseType (AExpr a) [ABranchExpr a] | ATyped a (AExpr a) TypeExpr deriving (Eq, Read, Show) data ABranchExpr a = ABranch (APattern a) (AExpr a) deriving (Eq, Read, Show) data APattern a = APattern a (QName, a) [(VarIndex, a)] | ALPattern a Literal deriving (Eq, Read, Show)