Paradigm | Functional |
---|---|
Designed by | Edwin Brady |
First appeared | 2007[1] |
Stable release | 1.3.4[2]
/ October 22, 2021 |
Preview release | 0.7.0 (Idris 2)[3]
/ December 22, 2023 |
Typing discipline | Inferred, static, strong |
OS | Cross-platform |
License | BSD |
Filename extensions | .idr, .lidr |
Website | idris-lang |
Influenced by | |
Agda, Clean,[4] Coq,[5] Epigram, F#, Haskell,[5] ML,[5] Rust[4] |
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.[6] 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.[7]
Idris is named after a singing dragon from the 1970s UK children's television program Ivor the Engine.[8]