curry-frontend-1.0.4: Compile the functional logic language Curry to several intermediate formats

Copyright(c) Wolfgang Lux
2011 - 2015 Björn Peemöller
2015 Jan Tikovsky
2016 Finn Teegen
LicenseBSD-3-clause
Maintainerbjp@informatik.uni-kiel.de
Stabilityexperimental
Portabilityportable
Safe HaskellSafe
LanguageHaskell2010

Base.Expr

Description

The compiler needs to compute the lists of free and bound variables for various different entities. We will devote three type classes to that purpose. The QualExpr class is expected to take into account that it is possible to use a qualified name to refer to a function defined in the current module and therefore M.x and x, where M is the current module name, should be considered the same name. However, note that this is correct only after renaming all local definitions as M.x always denotes an entity defined at the top-level.

Documentation

class Expr e where Source #

Methods

fv :: e -> [Ident] Source #

Free variables in an Expr

Instances
Expr TypeExpr Source # 
Instance details

Defined in Base.Expr

Methods

fv :: TypeExpr -> [Ident] Source #

Expr QualTypeExpr Source # 
Instance details

Defined in Base.Expr

Methods

fv :: QualTypeExpr -> [Ident] Source #

Expr Constraint Source # 
Instance details

Defined in Base.Expr

Methods

fv :: Constraint -> [Ident] Source #

Expr Alt Source # 
Instance details

Defined in IL.Type

Methods

fv :: Alt -> [Ident] Source #

Expr Expression Source # 
Instance details

Defined in IL.Type

Methods

fv :: Expression -> [Ident] Source #

Expr e => Expr [e] Source # 
Instance details

Defined in Base.Expr

Methods

fv :: [e] -> [Ident] Source #

class QualExpr e where Source #

Methods

qfv :: ModuleIdent -> e -> [Ident] Source #

Free qualified variables in an Expr

Instances
QualExpr e => QualExpr [e] Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> [e] -> [Ident] Source #

QualExpr (Decl a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Decl a -> [Ident] Source #

QualExpr (Equation a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Equation a -> [Ident] Source #

QualExpr (Lhs a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Lhs a -> [Ident] Source #

QualExpr (Rhs a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Rhs a -> [Ident] Source #

QualExpr (CondExpr a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> CondExpr a -> [Ident] Source #

QualExpr (Pattern a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Pattern a -> [Ident] Source #

QualExpr (Expression a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Expression a -> [Ident] Source #

QualExpr (InfixOp a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> InfixOp a -> [Ident] Source #

QualExpr (Statement a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Statement a -> [Ident] Source #

QualExpr (Alt a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Alt a -> [Ident] Source #

QualExpr a => QualExpr (Field a) Source # 
Instance details

Defined in Base.Expr

Methods

qfv :: ModuleIdent -> Field a -> [Ident] Source #

class QuantExpr e where Source #

Methods

bv :: e -> [Ident] Source #

Bounded variables in an Expr

Instances
QuantExpr TypeExpr Source # 
Instance details

Defined in Base.Expr

Methods

bv :: TypeExpr -> [Ident] Source #

QuantExpr QualTypeExpr Source # 
Instance details

Defined in Base.Expr

Methods

bv :: QualTypeExpr -> [Ident] Source #

QuantExpr Constraint Source # 
Instance details

Defined in Base.Expr

Methods

bv :: Constraint -> [Ident] Source #

QuantExpr e => QuantExpr [e] Source # 
Instance details

Defined in Base.Expr

Methods

bv :: [e] -> [Ident] Source #

QuantExpr (Decl a) Source # 
Instance details

Defined in Base.Expr

Methods

bv :: Decl a -> [Ident] Source #

QuantExpr (Lhs a) Source # 
Instance details

Defined in Base.Expr

Methods

bv :: Lhs a -> [Ident] Source #

QuantExpr (Pattern a) Source # 
Instance details

Defined in Base.Expr

Methods

bv :: Pattern a -> [Ident] Source #

QuantExpr (Statement a) Source # 
Instance details

Defined in Base.Expr

Methods

bv :: Statement a -> [Ident] Source #

QuantExpr a => QuantExpr (Field a) Source # 
Instance details

Defined in Base.Expr

Methods

bv :: Field a -> [Ident] Source #

QuantExpr (Var a) Source # 
Instance details

Defined in Base.Expr

Methods

bv :: Var a -> [Ident] Source #