Idris (programming language)
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.
Paradigm | Functional |
---|---|
Designed by | Edwin Brady |
First appeared | 2007 |
Stable release | 1.3.4
/ October 22, 2021 |
Preview release | 0.6.0 (Idris 2)
/ October 28, 2022 |
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 |
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.