idris: Functional Programming Language with Dependent Types
Idris is a general purpose language with full dependent types. It is compiled, with eager evaluation. 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. The language is closely related to Epigram and Agda. There is a tutorial at https://www.idris-lang.org/documentation. Features include:
Full, first class, dependent types with dependent pattern matching
where clauses, with rule, case expressions, pattern matching let and lambda bindings
Interfaces (similar to type classes), monad comprehensions
do notation, idiom brackets, syntactic conveniences for lists, tuples, dependent pairs
Totality checking
Coinductive types
Indentation significant syntax, extensible syntax
Cumulative universes
Simple foreign function interface (to C)
Hugs style interactive environment
[Skip to Readme]
Modules
- IRTS
- IRTS.Bytecode
- IRTS.CodegenC
- IRTS.CodegenCommon
- IRTS.CodegenJavaScript
- IRTS.Compiler
- IRTS.Defunctionalise
- IRTS.DumpBC
- IRTS.Exports
- IRTS.Inliner
- JavaScript
- IRTS.JavaScript.AST
- IRTS.JavaScript.Codegen
- IRTS.JavaScript.LangTransforms
- IRTS.JavaScript.Name
- IRTS.JavaScript.PrimOp
- IRTS.JavaScript.Specialize
- IRTS.Lang
- IRTS.LangOpts
- IRTS.Portable
- IRTS.Simplified
- IRTS.System
- Idris
- Idris.ASTUtils
- Idris.AbsSyntax
- Idris.AbsSyntaxTree
- Idris.Apropos
- Idris.CaseSplit
- Idris.Chaser
- Idris.CmdOptions
- Idris.Colours
- Idris.Completion
- Core
- Idris.Core.Binary
- Idris.Core.CaseTree
- Idris.Core.Constraints
- Idris.Core.DeepSeq
- Idris.Core.Elaborate
- Idris.Core.Evaluate
- Idris.Core.Execute
- Idris.Core.ProofState
- Idris.Core.ProofTerm
- Idris.Core.TT
- Idris.Core.Typecheck
- Idris.Core.Unify
- Idris.Core.WHNF
- Idris.Coverage
- Idris.DSL
- Idris.DataOpts
- Idris.DeepSeq
- Idris.Delaborate
- Idris.Directives
- Idris.Docs
- Idris.Docstrings
- Elab
- Idris.Elab.AsPat
- Idris.Elab.Clause
- Idris.Elab.Data
- Idris.Elab.Implementation
- Idris.Elab.Interface
- Idris.Elab.Provider
- Idris.Elab.Quasiquote
- Idris.Elab.Record
- Idris.Elab.Rewrite
- Idris.Elab.RunElab
- Idris.Elab.Term
- Idris.Elab.Transform
- Idris.Elab.Type
- Idris.Elab.Utils
- Idris.Elab.Value
- Idris.ElabDecls
- Idris.Erasure
- Idris.ErrReverse
- Idris.Error
- Idris.Help
- Idris.IBC
- Idris.IdeMode
- Idris.IdrisDoc
- Idris.Imports
- Idris.Info
- Idris.Info.Show
- Idris.Inliner
- Idris.Interactive
- Idris.Main
- Idris.ModeCommon
- Idris.Options
- Idris.Output
- Idris.Package
- Idris.Package.Common
- Idris.Package.Parser
- Idris.Parser
- Idris.Parser.Data
- Idris.Parser.Expr
- Idris.Parser.Helpers
- Idris.Parser.Ops
- Idris.Parser.Stack
- Idris.PartialEval
- Idris.Primitives
- Idris.ProofSearch
- Idris.Prover
- Idris.Providers
- Idris.REPL
- Idris.REPL.Browse
- Idris.REPL.Commands
- Idris.REPL.Parser
- Idris.Reflection
- Idris.Termination
- Idris.Transforms
- Idris.TypeSearch
- Idris.Unlit
- Idris.WhoCalls
- Util
- Util.DynamicLinker
- Util.ScreenSize
- Util.System
Flags
Manual Flags
| Name | Description | Default |
|---|---|---|
| ffi | Build support for libffi | Disabled |
| gmp | Use GMP for Integers | Disabled |
| release | This is an official release | Disabled |
| freestanding | Build an Idris that doesn't use cabal | Disabled |
| ci | Built everything using "-Werror", meant for CI-builds only | Disabled |
| execonly | Build executables only, skip the libraries and RTS | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- idris-1.3.4.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 0.1.3, 0.1.3.1, 0.1.4, 0.1.5, 0.1.7, 0.1.7.1, 0.9.0, 0.9.1, 0.9.2, 0.9.2.1, 0.9.3, 0.9.3.1, 0.9.4, 0.9.4.1, 0.9.5, 0.9.5.1, 0.9.6, 0.9.6.1, 0.9.7, 0.9.8, 0.9.9, 0.9.9.1, 0.9.9.2, 0.9.9.3, 0.9.10, 0.9.10.1, 0.9.11, 0.9.11.1, 0.9.11.2, 0.9.12, 0.9.13, 0.9.13.1, 0.9.14, 0.9.14.1, 0.9.14.2, 0.9.14.3, 0.9.15, 0.9.15.1, 0.9.16, 0.9.17, 0.9.17.1, 0.9.18, 0.9.18.1, 0.9.19, 0.9.19.1, 0.9.20, 0.9.20.1, 0.9.20.2, 0.10, 0.10.1, 0.10.2, 0.10.3, 0.11, 0.11.1, 0.11.2, 0.12, 0.12.1, 0.12.2, 0.12.3, 0.99, 0.99.1, 0.99.2, 1.0, 1.1.0, 1.1.1, 1.2.0, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | aeson (>=0.6 && <1.6), annotated-wl-pprint (>=0.7 && <0.8), ansi-terminal (<0.12), ansi-wl-pprint (<0.7), array (>=0.4.0.1 && <0.6), async (<2.3), base (>=4 && <5), base64-bytestring (<1.3), binary (>=0.8.4.1 && <0.9), blaze-html (>=0.6.1.3 && <0.10), blaze-markup (>=0.5.2.1 && <0.10), bytestring (<0.11), cheapskate (>=0.1.1.2 && <0.2), code-page (>=0.1 && <0.3), containers (>=0.5 && <0.7), deepseq (<1.5), directory (>=1.2.2.0 && <1.2.3.0 || >1.2.3.0), fail (>=4.9.0 && <4.9.1), filepath (<1.5), fingertree (>=0.1.4.1 && <0.2), fsnotify (>=0.2 && <0.4), haskeline (>=0.8 && <0.9), idris , ieee754 (>=0.7 && <0.9), megaparsec (>=7.0.4 && <10), mintty (>=0.1 && <0.2), mtl (>=2.1 && <2.3), network (>=2.7 && <3.1.2), optparse-applicative (>=0.13 && <0.17), parser-combinators (>=1.0.0), pretty (<1.2), process (<1.7), regex-tdfa (>=1.2), safe (>=0.3.9), semigroups (>=0.18 && <0.19), split (<0.3), terminal-size (<0.4), text (>=1.2.1.0 && <1.4), time (>=1.4 && <2.0), transformers (>=0.5 && <0.6), uniplate (>=1.6 && <1.7), unix (<2.8), unordered-containers (<0.3), utf8-string (<1.1), vector (<0.13), vector-binary-instances (<0.3), Win32 (<2.7), zip-archive (>0.2.3.5 && <0.5) [details] |
| Tested with | ghc ==8.6.5, ghc ==8.8.4 |
| License | BSD-3-Clause |
| Author | Edwin Brady |
| Maintainer | Niklas Larsson <niklas@mm.st> |
| Category | Compilers/Interpreters, Dependent Types |
| Home page | https://www.idris-lang.org/ |
| Bug tracker | https://github.com/idris-lang/Idris-dev/issues |
| Source repo | head: git clone git://github.com/idris-lang/Idris-dev.git |
| Uploaded | by niklasl at 2021年10月22日T22:58:30Z |
| Distributions | Arch:1.3.4, Fedora:1.3.4, NixOS:1.3.4 |
| Reverse Dependencies | 1 direct, 0 indirect [details] |
| Executables | idris-codegen-node, idris-codegen-javascript, idris-codegen-c, idris |
| Downloads | 71413 total (187 in the last 30 days) |
| Rating | 2.25 (votes: 2) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs not available [build log] All reported builds failed as of 2021年11月01日 [all 1 reports] |
Readme for idris-1.3.4
[back to package description]Idris 1
Build Status Appveyor build Documentation Status Hackage Stackage LTS Stackage Nightly IRC
Idris (https://idris-lang.org/) is a general-purpose functional programming language with dependent types.
Installation
This repository represents the latest development version of the language, and may contain bugs that are being actively worked on. For those who wish to use a more stable version of Idris please consider installing the latest version that has been released on Hackage. Installation instructions for various platforms can be found on the Idris Wiki.
More information about building Idris from source has been detailed in the Installation Guide
Code Generation
Idris has support for external code generators. Supplied with the distribution
is a C code generator to compile executables, and a JavaScript code generator
with support for node.js and browser JavaScript.
More information about code generators can be found here.
Status
This is Idris 1, implemented in Haskell. Idris 1 is not actively worked on anymore.
Idris 2 is the next generation of Idris, and where primary development happens.
More Information
If you would like to find out more information, or ask questions, we
currently have a Wiki;
a mailing list,
and an IRC channel #idris on freenode. To join the IRC channel,
point your irc client to chat.freenode.net then /join #idris.
For those further interested in using Idris for projects, the Idris Hackers GitHub organisation is where some interesting projects are being hosted.
For those interested in contributing to Idris directly we kindly ask that prospective developers please consult the Contributing Guide first.