# Awesome Idris [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) [](https://www.idris-lang.org/) > An auxiliary list of awesome [Idris](https://www.idris-lang.org/) resources. Idris is a general purpose pure functional programming language with dependent types. Dependent types allow types to be predicated on values, meaning that some aspects of a program’s behaviour can be specified precisely in the type. It is compiled, with eager evaluation. Its features are influenced by Haskell and ML. ## Contents - [Official resources](#official-resources) - [Articles](#articles) - [Books](#books) - [Papers](#papers) - [Presentations](#presentations) - [Projects](#projects) ### Official resources * [Official website](https://www.idris-lang.org/) * [Official repo](https://github.com/idris-lang/Idris-dev) ### Articles * [10 things Idris improved over Haskell](https://deque.blog/2017/06/14/10-things-idris-improved-over-haskell/) * [Meet Idris, a language that will change the way you think about programming](https://crufter.com/idris-a-language-that-will-change-the-way-you-think-about-programming) * [Tests vs. Types](http://kevinmahoney.co.uk/articles/tests-vs-types/) ### Books * [Type Driven Development With Idris](https://www.manning.com/books/type-driven-development-with-idris) - Most important book published so far. * [Type Theory and Functional Programming](https://www.cs.kent.ac.uk/people/staff/sjt/TTFP/) * [Programming in Martin-Löf's Type Theory](http://www.cse.chalmers.se/research/group/logic/book/book.pdf) * [Software Foundations](https://idris-hackers.github.io/software-foundations/pdf/sf-idris-2018.pdf) - Repo is [here](https://github.com/idris-hackers/software-foundations). * [Gentle Introduction to Dependent Types with Idris](https://leanpub.com/gidti) ### Papers * [Elaborator Reflection: Extending Idris in Idris](https://eb.host.cs.st-andrews.ac.uk/drafts/elab-reflection.pdf) - David Christiansen and Edwin Brady, 2016. * [Cross-platform Compilers for Functional Languages](https://eb.host.cs.st-andrews.ac.uk/drafts/compile-idris.pdf) - Edwin Brady, 2015. * [Programming and Reasoning with Side-Effects in Idris](https://eb.host.cs.st-andrews.ac.uk/drafts/eff-tutorial.pdf) - Edwin Brady, 2014. * [Idris, a General Purpose Dependently Typed Programming Language: Design and Implementation](https://pdfs.semanticscholar.org/1407/220ca09070233dca256433430d29e5321dc2.pdf) - Edwin Brady, 2013. * [Programming and Reasoning with Algebraic Effects and Dependent Types](https://eb.host.cs.st-andrews.ac.uk/drafts/effects.pdf) - Edwin Brady, 2013. * [Sequential decision problems, dependently typed solutions](http://eb.host.cs.st-andrews.ac.uk/writings/plmms13.pdf) - Nicola Botta, Cezar Ionescu and Edwin Brady, 2013. * [Programming in Idris: a tutorial](http://eb.host.cs.st-andrews.ac.uk/writings/idris-tutorial.pdf) - Edwin Brady, 2012. * [Idris — Systems Programming Meets Full Dependent Types](https://eb.host.cs.st-andrews.ac.uk/writings/plpv11.pdf) - Edwin Brady, 2011. * [Scrapping your Inefficient Engine: using Partial Evaluation to Improve Domain-Specific Language Implementation](http://eb.host.cs.st-andrews.ac.uk/writings/icfp10.pdf) - Edwin Brady and Kevin Hammond, 2010. * [Correct-by-Construction Concurrency: using Dependent Types to Verify Implementations of Effectful Resource Usage Protocols](http://eb.host.cs.st-andrews.ac.uk/writings/fi-cbc.pdf) - Edwin Brady and Kevin Hammond, 2010. * [Domain Specific Languages (DSLs) for Network Protocols](http://eb.host.cs.st-andrews.ac.uk/drafts/ngna2009-dsl.pdf) - Saleem Bhatti, Edwin Brady, Kevin Hammond and James McKinna, 2009. * [Lightweight Invariants with Full Dependent Types](http://eb.host.cs.st-andrews.ac.uk/drafts/tfp08.pdf) - Edwin Brady, Christoph Herrmann and Kevin Hammond, 2008. ### Presentations * [Idris: General Purpose Programming with Dependent Types](https://www.youtube.com/watch?v=vkIlW797JN8) - Presentation by Edwin Brady, Idris' creator. ### Projects * [GitHub's trending Idris repos](https://github.com/trending/idris) * [iridium](https://github.com/puffnfresh/iridium) - xmonad with the X11 abstracted and configured with Idris. * [lightyear](https://github.com/ziman/lightyear) - Parser combinators for Idris. * [quantities](https://github.com/timjb/quantities) Type-safe physical computations and unit conversions in Idris. * [idris-type-providers](https://github.com/david-christiansen/idris-type-providers) - Type provider library for Idris. * [IdrisScript](https://github.com/idris-hackers/IdrisScript) - FFI Bindings to interact with the unsafe world of JavaScript. * [idris-containers](https://github.com/jfdm/idris-containers) - Various data structures for use in the Idris Language. * [IdrisSqlite](https://github.com/david-christiansen/IdrisSqlite) - Effectful bindings for SQLite. * [idris-http](https://github.com/uwap/idris-http) - HTTP library for Idris. * [RingIdris](https://github.com/FranckS/RingIdris) - Ring solver for Idris. * [specdris](https://github.com/pheymann/specdris) - Test framework for Idris. * [idris-config](https://github.com/jfdm/idris-config) - Parsers for various configuration files written in Idris. * [probability](https://github.com/BlackBrane/probability) - Probabilistic computation in Idris. * [idris-protobuf](https://github.com/google/idris-protobuf) - Partial implementation of Protocol Buffers in Idris. * [idris-free](https://github.com/idris-hackers/idris-free) - Free Monads and useful constructions to work with them. * [idris-ct](https://github.com/statebox/idris-ct) - Formally verified category theory library * [typedefs](https://github.com/typedefs/typedefs) - Programming language-agnostic, algebraic data type definition language ### Backends * [idris-jvm](https://github.com/mmhelloworld/idris-jvm) - JVM bytecode backend for Idris. * [idris-llvm](https://github.com/idris-hackers/idris-llvm) - LLVM backend. * [idris-erlang](https://github.com/lenary/idris-erlang) - Erlang backend. * [idris-malfunction](https://github.com/stedolan/idris-malfunction) - Experimental Malfunction (OCaml internal representation) backend. ### Build tools | Package managers - [Idris Rules](http://idris.build) - Idris rules for Bazel - [Ikan](https://github.com/idris-industry/ikan) - A package manager for idris, in idris - [Elba](https://github.com/elba/elba) - A package manager for Idris - [idream](https://github.com/idream-build/idream) - A simple build system for Idris ### Community * [Mailing list](http://groups.google.com/group/idris-lang) * IRC: #idris on [freenode.net](https://webchat.freenode.net/) * [GitHub organization](https://github.com/idris-hackers) * [Community Standards](https://www.idris-lang.org/documentation/community-standards/) ## License [![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)