A Dependently Typed Functional Programming Language
Go to file
Edwin Brady 5bd5777fb7 Add :makecase (:mc) to REPL and ide-mode
Replaces a metavariable with a case block, with an _ for the scrutinee
(much like :makewith)

I just got bored of typing these :). There is a corresponding update to
idris-vim.
2015-07-30 16:31:59 +01:00
benchmarks Address semantic differences in putting things to STDOUT. 2015-03-06 17:26:33 +00:00
codegen Implement bundled toolchain feature 2015-04-02 17:21:08 +02:00
docs Fixed styling for multi line string literal docs 2015-07-30 00:31:17 +02:00
icons Icons and mimetype declarations 2015-07-05 14:05:52 +01:00
idrisdoc Updated signatures to use Conor colours, increased difference between links and non-links, and fixed a wrap issue in Safari and Chrome 2014-04-17 01:30:02 +02:00
iif Change TRACE mode to use -O2 2012-09-05 17:24:37 +01:00
jsrts Merge pull request #2455 from melted/ffi_wrap 2015-07-22 16:05:37 +02:00
libs Add a couple of convenience functions in Data.Vect 2015-07-28 21:43:02 +01:00
logos Added SVG logos 2015-06-22 15:32:38 +01:00
main Implement bundled toolchain feature 2015-04-02 17:21:08 +02:00
man Fix typo in help message (language extension) 2014-09-12 21:48:50 +02:00
rts Check messages are passed to active VMs 2015-07-11 23:11:59 +01:00
samples need to import Data.Vect and Data.Fin for interp.idr to compile 2015-07-19 00:47:04 -07:00
src Add :makecase (:mc) to REPL and ide-mode 2015-07-30 16:31:59 +01:00
test Multiple record fields on one line (#2460) 2015-07-26 16:29:26 +01:00
.gitattributes typo fix in git attributes, adding test results to gitignore 2012-11-26 21:09:59 -05:00
.gitignore Add Stackage Configuration for easy building 2015-07-25 19:14:28 +01:00
.travis.yml Remove travis deps unused since llvm & java backend removals. 2015-07-07 11:56:24 -07:00
CHANGELOG Add parser highlights to CHANGELOG 2015-07-17 12:49:01 +02:00
CITATION.md Added a citation file. 2015-02-26 16:35:38 +00:00
config.mk Add AR and RANLIB envs for exherbo multiarch. 2015-05-21 16:52:00 +01:00
CONTRIBUTING.md Tidying CONTRIBUTING.md 2015-03-29 17:10:03 +01:00
CONTRIBUTORS Added SVG logos 2015-06-22 15:32:38 +01:00
custom.mk-alldeps Saner set of suggested defaults for cabal flags. 2015-04-14 23:08:37 +01:00
idris-tutorial.pdf Updated PDF version of tutorial to current release. 2015-05-27 12:45:48 +01:00
idris.cabal Added WHNF module 2015-07-24 01:45:38 +01:00
LICENSE Fix LICENSE 2011-09-14 18:01:24 +01:00
Makefile Add a make target to build an Idris without optimization 2015-07-13 16:23:30 +02:00
mkpkg.sh Add script to put library docs in a tarball. 2015-03-19 19:14:44 +01:00
README.md Add ReadTheDocs badge to README 2015-03-20 11:31:10 +01:00
Setup.hs Remove unused imports 2015-05-18 16:42:05 +01:00
stack.yaml Add Stackage Configuration for easy building 2015-07-25 19:14:28 +01:00
win-release.sh Implement bundled toolchain feature 2015-04-02 17:21:08 +02:00

Idris

Build Status Documentation Status Hackage

Idris (http://idris-lang.org/) is a general-purpose functional programming language with dependent types.

Standard Installation Instructions

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.

Installing Development Versions

If you like to work against the latest development version, please consider using Cabal Sandboxes to minimise disruption to your local Haskell setup. Instructions for installing Idris HEAD within a cabal sandbox are available on the Idris Wiki.

To configure, edit config.mk. The default values should work for most people.

Idris is built using a Makefile common targets include:

  • make This will install everything using cabal and typecheck the libraries.
  • make test This target execute the test suite.
  • make relib This target will typecheck and recompile the standard library.

Idris has an optional buildtime dependency on the C library libffi. If you would like to use the features that it enables, make sure that it is compiled for the same architecture as your Haskell compiler (e.g. 64 bit libraries for 64 bit ghc). By default, Idris builds without it. To build with it, pass the flag -f FFI.

To build with libffi by default, create a custom.mk file and add the following line to it:

CABALFLAGS += -f FFI

The file custom.mk-alldeps is a suitable example.

The continuous integration builds on travis-ci.org are built using the ghc-flag -Werror. To enable this behaviour locally also, please compile using make CI=true or adding the following line into custom.mk:

CI = true

If you are only compiling for installing the most current version, you can omit the CI flag, but please make sure you use it if you want to contribute.

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.

At this moment in time there are two external repositories with a Java code generator and an LLVM-based code generator.

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.