This example contains a module (Main.idr) containing two functions: main and main2. Both of these functions have a return type of IO () which means they can be used as the entrypoint when executing the program.
To execute an Idris 2 program, one can write idris2erl --exec <name> <file>. For example, to run the main function in Main.idr, I would write: idris2erl --exec main Main.idr. Similarly, to run the main2 function in Main.idr, I would write: idris2erl --exec main2 Main.idr. Try them out!
To generate the Erlang source code from an Idris 2 program, run the following command:
idris2erl -o main --directive "format erl" --output-dir . Main.idr
This will create the file main.erl in the current directory.
Explanation of the parameters:
-o main— Generate the output tomain.<extension>--directive "format erl"— Set the output format to Erlang source (Default isbeam)--output-dir .— Set the output directory to the current directory (Default isbuild/exec)
Open the REPL by running idris2erl Main.idr. The REPL supports quite a few commands. You can get a list of the commands by running :h (or :help).
If you started the idris2erl executable with an Idris module you are ready to execute it. If not, you can run :l Main.idr to load the Main module.
From the REPL you can run :exec main or :exec main2 to execute the desired function.
If you change the contents of the Main.idr while the REPL is still running, you will need to reload the module before executing it again. Run :r to reload Main.idr.
From the REPL (idris2erl Main.idr) one can ask for the documentation of a function using the :doc <name> command.
Asking for the documentation of main (:doc main) will return:
Main.main : IO ()
Hello world programIdris 2 supports two forms of comments:
|||for documentation--and{- -}for comments that will not be part of the documentation