curry-frontend-1.0.1: 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 #

Minimal complete definition

fv

Methods

fv :: e -> [Ident] Source #

Free variables in an Expr

Instances

Expr TypeExpr Source # 

Methods

fv :: TypeExpr -> [Ident] Source #

Expr QualTypeExpr Source # 

Methods

fv :: QualTypeExpr -> [Ident] Source #

Expr Constraint Source # 

Methods

fv :: Constraint -> [Ident] Source #

Expr Alt Source # 

Methods

fv :: Alt -> [Ident] Source #

Expr Expression Source # 

Methods

fv :: Expression -> [Ident] Source #

Expr e => Expr [e] Source # 

Methods

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

class QualExpr e where Source #

Minimal complete definition

qfv

Methods

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

Free qualified variables in an Expr

Instances

QualExpr e => QualExpr [e] Source # 

Methods

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

QualExpr (Decl a) Source # 

Methods

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

QualExpr (Equation a) Source # 

Methods

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

QualExpr (Lhs a) Source # 

Methods

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

QualExpr (Rhs a) Source # 

Methods

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

QualExpr (CondExpr a) Source # 

Methods

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

QualExpr (Pattern a) Source # 

Methods

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

QualExpr (Expression a) Source # 

Methods

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

QualExpr (InfixOp a) Source # 

Methods

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

QualExpr (Statement a) Source # 

Methods

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

QualExpr (Alt a) Source # 

Methods

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

QualExpr a => QualExpr (Field a) Source # 

Methods

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

class QuantExpr e where Source #

Minimal complete definition

bv

Methods

bv :: e -> [Ident] Source #

Bounded variables in an Expr

Instances

QuantExpr TypeExpr Source # 

Methods

bv :: TypeExpr -> [Ident] Source #

QuantExpr QualTypeExpr Source # 

Methods

bv :: QualTypeExpr -> [Ident] Source #

QuantExpr Constraint Source # 

Methods

bv :: Constraint -> [Ident] Source #

QuantExpr e => QuantExpr [e] Source # 

Methods

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

QuantExpr (Decl a) Source # 

Methods

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

QuantExpr (Lhs a) Source # 

Methods

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

QuantExpr (Pattern a) Source # 

Methods

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

QuantExpr (Statement a) Source # 

Methods

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

QuantExpr a => QuantExpr (Field a) Source # 

Methods

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

QuantExpr (Var a) Source # 

Methods

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