[Best viewed with any browser]

Idris

A language with dependent types

Introduction | Examples | Documentation | Download

Introduction

Idris is an experimental language with full dependent types. 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.

The aims of the project are:

Future plans include some more useful syntax (local definitions/where clauses being the most important), a compiler, links to the Ivor theorem prover and pluggable decision procedures.

Examples

See darcs repository. You can also look there for library code. Some particular things worth looking at are:

Documentation

Imagine there is some documentation here. Take a look at some code samples until it appears!

To load a program foo.idr, enter idris foo.idr at the shell prompt. You can then enter expressions to be evaluated. An expression of type IO a for some a will be executed (slowly, at the moment). You may get error messages, which will probably be incomprehensible. I will deal with this soon too...

Some notes on some less obvious features will be useful, however:

Download

You can download the source from the following places:

Requires GHC version 6.10 or greater to build; earlier versions should work but will need some fiddling.

You'll also need Ivor the Proof Engine. I will at some point make a release that collects all the non-standard stuff you need into one tarball.


Edwin Brady -- eb@dcs.st-and.ac.uk -- 20th July 2009