io.github.mmhelloworld:idris-jvm-compiler

JVM bytecode backend for Idris


Keywords
idris, java, jvm
License
BSD-3-Clause

Documentation

Idris 2 for JVM

Build Status

Idris 2 is a purely functional programming language with first class types. This repository provides Idris 2 compiler targeting JVM bytecode so that Idris 2 compiler and Idris 2 programs can run on the JVM.

Install

  • Download the latest Idris 2 JVM release from releases page.
  • Extract the archive and add idris2 launcher script directory <EXTRACTED_DIRECTORY_ROOT>/exec to PATH.
  • Create an environment variable IDRIS2_PREFIX pointing to <EXTRACTED_DIRECTORY_ROOT>/env

Example

helloworld.idr

    module Main

    data Tree a = Leaf
                | Node (Tree a) a (Tree a)

    inorder : Tree a -> List a
    inorder Leaf = []
    inorder (Node left a right) = inorder left ++ [a] ++ inorder right

    tree : Tree String
    tree = Node
            (Node
              (Node Leaf "3" Leaf)
              "+"
              (Node Leaf "7" Leaf))
            "/"
            (Node Leaf "2" Leaf)

    main : IO ()
    main = printLn $ inorder tree

Compile

idris2 helloworld.idr -o main

Run

% build/exec/main
["3", "+", "7", "/", "2"]

Documentation

License

This repository extends idris-lang/Idris2 repository with JVM backend. Files from idris-lang/Idris2 are covered by that repository's license. All other files from this repository are covered by BSD-3-Clause License. See LICENSE.