curry.toolchain.flat2icurry.flatcurry module

The FlatCurry data types, a reader for .fcy and .fint files, and a writer.

The types follow FlatCurry.Types of the Curry package flatcurry. A qualified name is a pair (module, name). Lists stay Python lists. The reader decodes the output of curry.utility.readcurry.parse(). The writer prints a program as the Curry front end does (terms.showhaskell()), so a program read from a file of the front end and written again gives the same bytes.

class curry.toolchain.flat2icurry.flatcurry.Branch(*args)

Bases: BranchExpr

property body
property pattern
class curry.toolchain.flat2icurry.flatcurry.Case(*args)

Bases: Expr

property branches
property casetype
property scrutinee
class curry.toolchain.flat2icurry.flatcurry.CaseType(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.Charc(*args)

Bases: Literal

property value
class curry.toolchain.flat2icurry.flatcurry.Comb(*args)

Bases: Expr

property args
property combtype
property name
class curry.toolchain.flat2icurry.flatcurry.CombType(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.Cons(*args)

Bases: ConsDecl

property argtypes
property arity
property name
property visibility
class curry.toolchain.flat2icurry.flatcurry.ConsPartCall(*args)

Bases: CombType

property missing
class curry.toolchain.flat2icurry.flatcurry.Expr(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.External(*args)

Bases: RuleDecl

property name
class curry.toolchain.flat2icurry.flatcurry.Fixity(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.Floatc(*args)

Bases: Literal

property value
class curry.toolchain.flat2icurry.flatcurry.ForallType(*args)

Bases: TypeExpr

property typeexpr
property typevars
class curry.toolchain.flat2icurry.flatcurry.Free(*args)

Bases: Expr

property body
property vars
class curry.toolchain.flat2icurry.flatcurry.Func(*args)

Bases: FuncDecl

property arity
property name
property rule
property typeexpr
property visibility
class curry.toolchain.flat2icurry.flatcurry.FuncPartCall(*args)

Bases: CombType

property missing
class curry.toolchain.flat2icurry.flatcurry.FuncType(*args)

Bases: TypeExpr

property domain
property range
class curry.toolchain.flat2icurry.flatcurry.Intc(*args)

Bases: Literal

property value
class curry.toolchain.flat2icurry.flatcurry.KArrow(*args)

Bases: Kind

property domain
property range
class curry.toolchain.flat2icurry.flatcurry.Kind(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.LPattern(*args)

Bases: PatternDecl

property literal
class curry.toolchain.flat2icurry.flatcurry.Let(*args)

Bases: Expr

property bindings
property body
class curry.toolchain.flat2icurry.flatcurry.Lit(*args)

Bases: Expr

property literal
class curry.toolchain.flat2icurry.flatcurry.Literal(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.NewCons(*args)

Bases: ConsDecl

property name
property typeexpr
property visibility
class curry.toolchain.flat2icurry.flatcurry.Op(*args)

Bases: OpDecl

property fixity
property name
property precedence
class curry.toolchain.flat2icurry.flatcurry.Or(*args)

Bases: Expr

property lhs
property rhs
class curry.toolchain.flat2icurry.flatcurry.Pattern(*args)

Bases: PatternDecl

property name
property vars
class curry.toolchain.flat2icurry.flatcurry.PatternDecl(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.Prog(*args)

Bases: Term

property functions
property imports
property name
property operators
property types
class curry.toolchain.flat2icurry.flatcurry.Rule(*args)

Bases: RuleDecl

property args
property body
class curry.toolchain.flat2icurry.flatcurry.RuleDecl(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.TCons(*args)

Bases: TypeExpr

property args
property name
class curry.toolchain.flat2icurry.flatcurry.TVar(*args)

Bases: TypeExpr

property index
class curry.toolchain.flat2icurry.flatcurry.Type(*args)

Bases: TypeDecl

property constructors
property name
property typevars
property visibility
class curry.toolchain.flat2icurry.flatcurry.TypeDecl(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.TypeExpr(*args)[source]

Bases: Term

class curry.toolchain.flat2icurry.flatcurry.TypeNew(*args)

Bases: TypeDecl

property constructor
property name
property typevars
property visibility
class curry.toolchain.flat2icurry.flatcurry.TypeSyn(*args)

Bases: TypeDecl

property name
property typeexpr
property typevars
property visibility
class curry.toolchain.flat2icurry.flatcurry.Typed(*args)

Bases: Expr

property expr
property typeexpr
class curry.toolchain.flat2icurry.flatcurry.Var(*args)

Bases: Expr

property index
class curry.toolchain.flat2icurry.flatcurry.Visibility(*args)[source]

Bases: Term

curry.toolchain.flat2icurry.flatcurry.all_vars(expr)[source]

All variables of an expression, pattern variables included, in the order of FlatCurry.Goodies.allVars. The list may repeat a variable. The walk keeps its own stack, so a nested application of any depth needs no recursion: an item of the stack is an expression to visit, or a list of variables to record as they are.

curry.toolchain.flat2icurry.flatcurry.data_decls_of(prog)[source]

The data declarations of a program: a list of pairs of a type name and the constructor names with their arities. A type synonym contributes nothing. A newtype contributes its one unary constructor.

curry.toolchain.flat2icurry.flatcurry.decode(rcdata)[source]

Converts the readcurry representation into FlatCurry terms. The walk runs on a stack of its own (utility.trampoline.trampoline()), so a term of any depth needs no recursion (issue #125).

curry.toolchain.flat2icurry.flatcurry.load(filename)[source]

Reads a FlatCurry program (or interface) from a file.

curry.toolchain.flat2icurry.flatcurry.prelude(name)[source]

The qualified name of a Prelude symbol.

curry.toolchain.flat2icurry.flatcurry.read(text)[source]

Reads a FlatCurry program (or interface) from .fcy text.

curry.toolchain.flat2icurry.flatcurry.show(prog)[source]

The text of a FlatCurry program (or interface) as the front end writes it: the show of Haskell, on one line, without a newline at the end.

curry.toolchain.flat2icurry.flatcurry.write(prog, filename)[source]

Writes a FlatCurry program to a file in the format of the front end. The text goes to a file beside the target first, which then takes the place of the target, so a reader never sees a partial file.