Overview
Idris is a general purpose pure functional programming language with 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. It is compiled, with eager evaluation. Its features are influenced by Haskell and ML, and include:
- Full dependent types with dependent pattern matching
where
clauses,with
rule, simplecase
expressions, pattern matchinglet
and lambda bindings- Dependent records with projection and update
- Type classes
- Monad comprehensions
- Syntactic conveniences for lists, tuples, dependent pairs
do
notation and idiom brackets- Indentation significant syntax
- Extensible syntax
- Tactic based theorem proving (influenced by Coq)
- Cumulative universes
- Totality checking
- Simple foreign function interface (to C)
- Hugs style interactive environment
There is a mailing list and a tutorial. You can also see a simple example.
There is also an irc channel #idris
on freenode. Point your irc client to chat.freenode.net
then /join #idris
. Alternatively, there is a web interface.
Contact
Idris is mainly developed by Edwin Brady at the University of St Andrews.