Files
awesome-awesomeness/readmes/idris.md6
2024-04-20 19:22:54 +02:00

103 lines
6.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Awesome Idris [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
[<img src="https://www.idris-lang.org/logo/logo.png" align="right" width="160">](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 programs 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/)