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

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

The Curry front end consists of the executable program "curry-frontend". It is used by various backends to compile Curry programs to an intermediate representation. The code is a stripped-down version of an early version of the Muenster Curry Compiler ( which has been extended to produce different intermediate representations. For further information, please check

[Skip to Readme]


Versions 0.1, 0.2, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.9, 0.2.10, 0.2.11, 0.2.12, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 2.0.0, 2.0.0
Change log
Dependencies base (>=4.11 && <4.15), binary (==0.8.*), bytestring (==0.10.*), containers (==0.6.*), curry-frontend, directory (>=1.2 && <1.4), extra (>=1.4.6 && <1.8), file-embed (==0.0.*), filepath (==1.4.*), mtl (==2.2.*), network-uri (==2.6.*), parsec (==3.1.*), pretty (==1.1.*), process (==1.6.*), set-extra (==1.4.*), template-haskell (>=2.10 && <2.16), time (>=1.9 && <2.0), transformers (==0.5.*) [details]
License BSD-3-Clause
Author Wolfgang Lux, Martin Engelke, Bernd Brassel, Holger Siegel, Bjoern Peemoeller, Finn Teegen
Category Language
Home page
Source repo head: git clone
Uploaded by CurryLanguage at 2021-02-11T12:26:58Z



Maintainer's Corner

For package maintainers and hackage trustees

Readme for curry-frontend-2.0.0

[back to package description]

Curry Frontend

The frontend lexes, parses, type-checks and transforms Curry source files into a variety of intermediate formats, including

It is used by the two major Curry compilers, PAKCS and KiCS2.



The built executable will be located at bin/curry-frontend.


For a detailed overview of the available options, you can use the following command:

curry-frontend --help

Available Formats

--flat  : Generate a FlatCurry (.fcy) and FlatInterface (.fint) file
--xml   : Generate a FlatXML (_flat.xml) file
--acy   : Generate a (type-inferred) AbstractCurry (.acy) file
--uacy  : Generate an untyped AbstractCurry (.uacy) file

The generation of an untyped AbstractCurry program is performed without type checking (i.e. programs with type checks will compile). All functions will either have the type signature specified in the source or, if not available, the dummy type prelude.untyped.

FlatCurry files will always be generated for the imported modules, since the interfaces are required for static-semantic analysis and type inference (only for typed AbstractCurry).


Known Issues

See GitLab