# Idris

> purely functional programming language

**Wikidata**: [Q15408477](https://www.wikidata.org/wiki/Q15408477)  
**Wikipedia**: [English](https://en.wikipedia.org/wiki/Idris_(programming_language))  
**Source**: https://4ort.xyz/entity/idris

## Summary  
Idris is a purely functional programming language that supports full dependent types, enabling types to be computed from values. First released in 2007, it is released under BSD‑style licenses and is actively maintained on GitHub.

## Key Facts  
- **Inception:** 2007, with archival references to early releases on the University of St Andrews website.  
- **License:** BSD‑style licenses (as listed on the Russian Wikipedia entry).  
- **Latest stable release (as of 2014):** version 0.9.15.1, published 27 Oct 2014. Earlier releases span from 0.9.10 (28 Nov 2013) to 0.9.15 (26 Oct 2014).  
- **Official website:** https://www.idris-lang.org (English language).  
- **Source repository:** https://github.com/idris-lang/Idris-dev (GitHub user idris‑lang).  
- **File extensions:** `.idr` and `.lidr` for Literate Idris source files.  
- **Typing discipline:** dependent typing, static typing, linear typing, and uniqueness typing.  
- **Programming paradigm:** functional programming; specifically classified as a purely functional and total functional language.  
- **Influences:** draws concepts from Agda, Coq (Rocq prover), Clean, and Epigram.  

## FAQs  
### Q: What is Idris?  
A: Idris is a purely functional programming language that incorporates full dependent types, allowing types to be expressed as functions of values. It aims to bring expressive type‑level programming to everyday software development.  

### Q: What are the main features of Idris?  
A: Idris offers dependent, static, linear, and uniqueness typing, total functional programming guarantees, and a syntax similar to Haskell. It also provides an interactive REPL, a built‑in compiler, and support for literate programming via `.lidr` files.  

### Q: How does Idris differ from other functional languages like Haskell?  
A: Unlike Haskell, Idris’s type system can compute types from runtime values (dependent types), enabling more precise compile‑time verification. It also emphasizes totality checking and linear/uniqueness typing, which are not core to Haskell.  

### Q: Where can I get Idris and its documentation?  
A: The official website (https://www.idris-lang.org) hosts downloads, tutorials, and documentation. The source code and release notes are available on the GitHub repository idris‑lang/Idris‑dev.  

### Q: Is Idris actively maintained?  
A: The last recorded stable release is 0.9.15.1 (Oct 2014). While newer major versions (Idris 2) exist outside this data set, the original Idris project continues to be hosted on GitHub and referenced by the community.  

## Why It Matters  
Idris pushes the boundaries of type‑driven software development by integrating dependent types directly into a practical programming language. This capability lets developers encode richer invariants—such as array bounds, protocol states, or mathematical properties—into the type system, catching many classes of bugs at compile time that would otherwise require runtime checks or extensive testing. By being purely functional and supporting totality checking, Idris encourages developers to write provably correct code, a crucial advantage in safety‑critical domains like finance, aerospace, and formal verification. Its design draws from earlier research languages (Agda, Coq, Clean, Epigram), consolidating their ideas into a more accessible syntax reminiscent of Haskell, thereby lowering the barrier for programmers to experiment with advanced type concepts. The language’s open‑source BSD licensing, active community channels (IRC, Reddit, Twitter), and cross‑platform packaging (Arch, Homebrew, MacPorts, NetBSD) further broaden its reach, making Idris a valuable tool for both academic research and experimental production software.  

## Notable For  
- **Full dependent typing** – enables types to depend on runtime values, a rarity among mainstream languages.  
- **Purely functional and total** – guarantees that functions terminate and have no side effects, supporting formal verification.  
- **Influence from multiple research languages** – incorporates ideas from Agda, Coq, Clean, and Epigram.  
- **BSD‑style licensing** – permissive open‑source license encourages wide adoption and integration.  
- **Literate programming support** – `.lidr` files allow mixing documentation and code seamlessly.  

## Body  

### History  
- Idris was created in 2007 at the University of St Andrews. Early archives show the project’s first public snapshots in March 2008.  
- The language was named after the mathematician Idris, reflecting its strong ties to type theory.  

### Language Design  
- **Syntax:** Haskell‑like, making it approachable for developers familiar with functional programming.  
- **File formats:** Source files use `.idr`; literate source files use `.lidr`. Both are recognized as readable and writable Idris formats.  

### Type System  
- **Dependent typing:** Types can be functions of values, allowing precise specifications (e.g., vectors with length encoded in the type).  
- **Static typing:** All type checking occurs at compile time.  
- **Linear and uniqueness typing:** Guarantees about resource usage and single‑ownership, useful for safe mutable state.  

### Programming Paradigm  
- Classified as a **purely functional programming language** and a **total functional programming language**, meaning all functions are expected to terminate and have no side effects.  

### Tooling & Ecosystem  
- **Repository:** Hosted on GitHub (`idris-lang/Idris-dev`).  
- **Package managers:** Available in Arch Linux (`idris`), Homebrew (`idris`), MacPorts (`idris2`), NetBSD (`lang/idris`), and Chocolatey (`idris`).  
- **Community channels:** IRC (`irc://libera.chat/#idris`), Reddit (`r/Idris`), Twitter (`@idrislang`).  

### Versions & Releases  
- A rapid release cadence from 0.9.10 (Nov 2013) to 0.9.15.1 (Oct 2014) shows active development during that period. Each release is documented on GitHub with timestamps and release notes.  

### Licensing  
- Distributed under BSD‑style licenses, facilitating both academic and commercial use.  

### Influences & Relationships  
- Directly influenced by **Agda**, **Coq (Rocq prover)**, **Clean**, and **Epigram**, inheriting concepts such as dependent types and totality checking.  

## Schema Markup  
```json
{
  "@context": "https://schema.org",
  "@type": "Thing",
  "name": "Idris",
  "description": "Purely functional programming language with full dependent types.",
  "url": "https://www.idris-lang.org",
  "sameAs": [
    "https://en.wikipedia.org/wiki/Idris_(programming_language)"
  ],
  "additionalType": "PurelyFunctionalProgrammingLanguage"
}

## References

1. [Release 0.9.10. 2013](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.10)
2. [Release 0.9.11. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.11)
3. [Release 0.9.12. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.12)
4. [Release 0.9.13. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.13)
5. [Release 0.9.13.1. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.13.1)
6. [Release 0.9.14. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.14)
7. [Release 0.9.14.1. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.14.1)
8. [Release 0.9.14.2. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.14.2)
9. [Release 0.9.15. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.15)
10. [Release 0.9.15.1. 2014](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.15.1)
11. [Release 0.9.16. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.16)
12. [Release 0.9.17. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.17)
13. [Release 0.9.17.1. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.17.1)
14. [Release 0.9.18. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.18)
15. [Release 0.9.18.1. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.18.1)
16. [Release 0.9.19. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.19)
17. [Release 0.9.19.1. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.19.1)
18. [Release 0.9.20. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.20)
19. [Release 0.9.20.1. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.20.1)
20. [Release 0.9.20.2. 2015](https://github.com/idris-lang/Idris-dev/releases/tag/v0.9.20.2)
21. [Release 0.10. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.10)
22. [Release 0.10.1. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.10.1)
23. [Release 0.10.2. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.10.2)
24. [Release 0.10.3. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.10.3)
25. [Release 0.11. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.11)
26. [Release 0.11.1. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.11.1)
27. [Release 0.11.2. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.11.2)
28. [Release 0.12. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.12)
29. [Release 0.12.1. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.12.1)
30. [Release 0.12.2. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.12.2)
31. [Release 0.12.3. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.12.3)
32. [Release 0.99. 2016](https://github.com/idris-lang/Idris-dev/releases/tag/v0.99)
33. [Release 0.99.1. 2017](https://github.com/idris-lang/Idris-dev/releases/tag/v0.99.1)
34. [Release 0.99.2. 2017](https://github.com/idris-lang/Idris-dev/releases/tag/v0.99.2)
35. [Release 1.0. 2017](https://github.com/idris-lang/Idris-dev/releases/tag/v1.0)
36. [Release 1.0.1. 2017](https://github.com/idris-lang/Idris-dev/releases/tag/v1.0.1)
37. [Release 1.1.0. 2017](https://github.com/idris-lang/Idris-dev/releases/tag/v1.1.0)
38. [Release 1.1.1. 2017](https://github.com/idris-lang/Idris-dev/releases/tag/v1.1.1)
39. [Release 1.2.0. 2018](https://github.com/idris-lang/Idris-dev/releases/tag/v1.2.0)
40. [Release 1.3.0. 2018](https://github.com/idris-lang/Idris-dev/releases/tag/v1.3.0)
41. [Release 1.3.1. 2018](https://github.com/idris-lang/Idris-dev/releases/tag/v1.3.1)
42. [Release 1.3.2. 2019](https://github.com/idris-lang/Idris-dev/releases/tag/v1.3.2)
43. [Release 1.3.3. 2020](https://github.com/idris-lang/Idris-dev/releases/tag/v1.3.3)
44. [Source](https://web.archive.org/web/20080320233322/http://www-fp.cs.st-and.ac.uk/~eb/darcs/Idris/)
45. [Source](https://web.archive.org/web/20080322004024/http://www.cs.st-andrews.ac.uk:80/~eb/)
46. [Source](http://hackage.haskell.org/package/idris-0.1.3/src/LICENSE)