A general-purpose functional programming language with dependent types for verified software development.
Idris is a general-purpose functional programming language that features dependent types, allowing types to depend on values. This enables developers to write highly expressive type specifications that can enforce correctness properties at compile time, such as ensuring array bounds or protocol invariants. It aims to bring the benefits of verified programming to practical software development.
Developers and researchers interested in type-driven development, formal verification, and building highly reliable software with strong correctness guarantees, particularly in areas like systems programming, compilers, or security-critical applications.
Idris offers a unique blend of dependent types in a general-purpose language, making it possible to catch complex bugs at compile time while remaining usable for real-world projects. Its support for multiple code generators (C, JavaScript) allows targeting various platforms without sacrificing type safety.
A Dependently Typed Functional Programming Language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables types to depend on values, allowing compile-time checks for properties like vector lengths, as highlighted in the key features for catching errors early.
Compiles to C for native executables and JavaScript for web environments, providing flexibility for deployment across different platforms, as noted in the code generation support.
Supports a REPL and interactive editing, facilitating exploration of types and proofs during coding, which enhances the development experience for verification tasks.
Allows for custom code generators and language extensions, adapting to various needs beyond standard features, as mentioned in the extensible design.
Idris 1 is no longer actively developed, with primary efforts shifted to Idris 2, limiting updates and long-term support for this version.
Dependent types require significant upfront investment in type theory, making it challenging for developers without a background in formal methods or advanced programming.
Has a smaller community and fewer third-party libraries compared to mainstream languages, which can hinder project development and resource availability.