Module CurryInterface.Types

Definition of data types to represent interfaces of Curry modules.

These definitions are adapted from the Haskell definition contained in the implementation of the Curry front end, see https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/blob/master/src/Curry/Syntax/Type.hs

Version: September 2024

Summary of exported operations:

Exported datatypes:


Interface

Interface declarations are restricted to type declarations and signatures. Note that an interface function declaration additionaly contains the function arity (= number of parameters) in order to generate correct FlatCurry function applications.

Constructors:


IImportDecl

Interface import declaration

Constructors:


Arity

Arity of a function

Type synonym: Arity = Int


Precedence

Operator precedence

Type synonym: Precedence = Int


Infix

Constructors:

  • InfixL :: Infix
  • InfixR :: Infix
  • Infix :: Infix

IDecl

Interface declaration

Constructors:


IMethodDecl

Class methods

Constructors:


IMethodImpl

Class method implementations

Type synonym: IMethodImpl = (Ident,Arity)


KindExpr

Kind expressions

Constructors:

  • Star :: KindExpr
  • ConstraintKind :: KindExpr
  • ArrowKind :: KindExpr -> KindExpr -> KindExpr

Ident

Constructors:

  • Ident :: String -> Ident

    Fields:

    • idName :: String

ModuleIdent

Constructors:

  • ModuleIdent :: [String] -> ModuleIdent

    Fields:

    • midQualifiers :: [String]

QualIdent

Constructors:


ConstrDecl

Constructors:


NewConstrDecl

Constructors:


FieldDecl

Constructors:


TypeExpr

Constructors:


QualTypeExpr

Constructors:


Context

Type synonym: Context = [Constraint]


Constraint

Constructors:


InstanceType

Type synonym: InstanceType = [TypeExpr]


FunDep

Constructors:


Exported operations: