Idris (programming language)
| Idris | |
|---|---|
| Paradigm | Functional | 
| Designed by | Edwin Brady | 
| First appeared | 2007 | 
| Stable release | 1.3.4
   / October 22, 2021 | 
| Preview release | 0.7.0 (Idris 2)
   / December 22, 2023 | 
| Typing discipline | Inferred, static, strong | 
| OS | Cross-platform | 
| License | BSD | 
| Filename extensions | .idr, .lidr | 
| Website | idris-lang | 
| Influenced by | |
| Agda, Clean, Coq, Epigram, F#, Haskell, ML, Rust | |
Idris is a purely-functional programming language with dependent types, optional lazy evaluation, and features such as a totality checker. Idris may be used as a proof assistant, but is designed to be a general-purpose programming language similar to Haskell.
The Idris type system is similar to Agda's, and proofs are similar to Coq's, including tactics (theorem proving functions/procedures) via elaborator reflection. Compared to Agda and Coq, Idris prioritizes management of side effects and support for embedded domain-specific languages. Idris compiles to C (relying on a custom copying garbage collector using Cheney's algorithm) and JavaScript (both browser- and Node.js-based). There are third-party code generators for other platforms, including Java virtual machine (JVM), Common Intermediate Language (CIL), and LLVM.
Idris is named after a singing dragon from the 1970s UK children's television program Ivor the Engine.