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.

Community

Mailing list
Long-form discussion happens on the mailing list.
GitHub
The Idris source is available from our repository. Tools and code by the wider Idris community are available in a GitHub organisation.
Discord
There is an Idris community on Discord with several channels for learning, help and different aspects of development. You can get an invitation to join here This is currently probably the most active place for interactive discussion of Idris.
IRC
There is also an irc channel #idris on libera. Point your irc client to irc.libera.chat then /join #idris. For a web interface, you can try IRCCloud.
Slack
There is an #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.

Support

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