idris: Functional Programming Language with Dependent Types

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.



Idris is a general purpose language with full dependent types. It is compiled, with eager evaluation. Dependent types allow types to be predicated on values, meaning that some aspects of a program's behaviour can be specified precisely in the type. The language is closely related to Epigram and Agda. There is a tutorial at Features include:

[Skip to ReadMe]


Versions0.1.3,, 0.1.4, 0.1.5, 0.1.7,, 0.9.0, 0.9.1, 0.9.2,, 0.9.3,, 0.9.4,, 0.9.5,, 0.9.6,, 0.9.7, 0.9.8, 0.9.9,,,, 0.9.10,, 0.9.11,,, 0.9.12, 0.9.13,, 0.9.14,,,, 0.9.15,, 0.9.16, 0.9.17,, 0.9.18,, 0.9.19,,, 0.9.20,,, 0.10, 0.10.1, 0.10.2, 0.10.3, 0.11, 0.11.1, 0.11.2, 0.12, 0.12.1, 0.12.2, 0.12.3, 0.99, 0.99.1, 0.99.2, 1.0, 1.1.0, 1.1.1, 1.2.0, 1.3.0, 1.3.1, 1.3.2
Dependenciesannotated-wl-pprint (==0.7.*), ansi-terminal (<0.7), ansi-wl-pprint (<0.7), base (==4.*), base64-bytestring (<1.1), binary (==0.7.*), blaze-html (>= && <0.9), blaze-markup (>= && <0.8), bytestring (<0.11), cheapskate (<0.2), containers (==0.5.*), deepseq (<1.5), directory (>= && < || >, filepath (<1.5), fingertree (==0.1.*), haskeline (==0.7.*), idris, mtl (>=2.1 && <2.3), network (<2.7), optparse-applicative (==0.11.*), parsers (>=0.9 && <0.13), pretty (<1.2), process (<1.3), safe, split (<0.3), text (>= && <1.3), time (>=1.4 && <1.6), transformers (<0.5), transformers-compat (>=0.3), trifecta (>=1.1 && <1.6), uniplate (==1.6.*), unix (<2.8), unordered-containers (<0.3), utf8-string (<1.1), vector (<0.11), vector-binary-instances (<0.3), Win32 (<2.4), zip-archive (> && <0.2.4), zlib (<0.6) [details]
AuthorEdwin Brady
MaintainerEdwin Brady <>
CategoryCompilers/Interpreters, Dependent Types
Home page
Source repositoryhead: git clone git://
Executablesidris-codegen-node, idris-codegen-javascript, idris-codegen-c, idris
UploadedTue Sep 22 11:05:01 UTC 2015 by EdwinBrady





Build support for libffi


Use GMP for Integers


Use Curses to get the screen width


This is an official release


Build an Idris that doesn't use cabal


Built everything using "-Werror", meant for CI-builds only


Build executables only, skip the libraries and RTS


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainers' corner

For package maintainers and hackage trustees

Readme for idris-

[back to package description]


Build Status Documentation Status Hackage

Idris ( is a general-purpose functional programming language with dependent types.

Standard Installation Instructions

This repository represents the latest development version of the language, and may contain bugs that are being actively worked on. For those who wish to use a more stable version of Idris please consider installing the latest version that has been released on Hackage. Installation instructions for various platforms can be found on the Idris Wiki.

Installing Development Versions

If you like to work against the latest development version, please consider using Cabal Sandboxes to minimise disruption to your local Haskell setup. Instructions for installing Idris HEAD within a cabal sandbox are available on the Idris Wiki.

To configure, edit The default values should work for most people.

Idris is built using a Makefile common targets include:

Idris has an optional buildtime dependency on the C library libffi. If you would like to use the features that it enables, make sure that it is compiled for the same architecture as your Haskell compiler (e.g. 64 bit libraries for 64 bit ghc). By default, Idris builds without it. To build with it, pass the flag -f FFI.

To build with libffi by default, create a file and add the following line to it:


The file is a suitable example.

The continuous integration builds on are built using the ghc-flag -Werror. To enable this behaviour locally also, please compile using make CI=true or adding the following line into

CI = true

If you are only compiling for installing the most current version, you can omit the CI flag, but please make sure you use it if you want to contribute.

Code Generation

Idris has support for external code generators. Supplied with the distribution is a C code generator to compile executables, and a JavaScript code generator with support for node.js and browser JavaScript.

At this moment in time there are two external repositories with a Java code generator and an LLVM-based code generator.

More Information

If you would like to find out more information, or ask questions, we currently have a Wiki; a mailing list, and an IRC channel #idris on freenode. To join the IRC channel, point your irc client to then /join #idris.

For those further interested in using Idris for projects, the Idris Hackers GitHub organisation is where some interesting projects are being hosted.

For those interested in contributing to Idris directly we kindly ask that prospective developers please consult the Contributing Guide first.