Idris: A Language for Type-Driven Development

Idris is a programming language designed to encourage Type-Driven Development.

In type-driven development, types are tools for constructing programs. We treat the type as the plan for a program, and use the compiler and type checker as our assistant, guiding us to a complete program that satisfies the type. The more expressive the type is that we give up front, the more confidence we can have that the resulting program will be correct.

In Idris, types are first-class constructs in the langauge. This means types can be passed as arguments to functions, and returned from functions just like any other value, such as numbers, strings, or lists. This is a small but powerful idea, enabling:

Getting Started

You can see some small examples, then take a look at the documentation.


Mailing list
Long-form discussion happens on the mailing list.
There is also an irc channel #idris on freenode. Point your irc client to then /join #idris. Alternatively, there is a web interface.
The Idris source is available from our repository. Tools and code by the wider Idris community are available in a GitHub organisation.
There is an active #idris channel on the Functional Programming Slack.

All participants in these forums are requested to abide by the community standards.

Idris development is led by Edwin Brady at the School of Computer Science, University of St Andrews.

Many thanks to Heath Johns for designing the logo.


Idris has been generously supported by the following EPSRC grants:

We are also grateful for the continuing support of SICSA, the Scottish Informatics and Computer Science Alliance