Basics of I/O¶
This chapter explains how to use IO operation in Egison.
Hello World!¶
Let’s start this tutorial by greeting the world. The following is the “Hello world” program in Egison.
-- hello.egi
def main args :=
write "Hello, World!\n"
We can execute the above program as follows.
$ egison hello.egi
Hello, World!
Egison I/O works via a function named main.
In main, we can use I/O functions such as write.
(The list of I/O primitive functions is given in List of Primitive Functions.)
Command Line Arguments¶
Command line arguments are given to the main as its argument as a collection of strings.
For instance, assume the following program.
-- args.egi
def main args :=
write (show args)
If you execute the following commands, you will see that the arguments are given to main as args.
$ egison args.egi
[]
$ egison args.egi We can write scripts in Egison
["We", "can", "write", "scripts", "in", "Egison"]
do expressions¶
To combine several I/O operations to one, we can use do expressions.
The feature of do expressions is serial execution; the I/O functions in the do expressions are executed from the top in order.
If you know Haskell, you probably notice that it is the same with the do expressions in Haskell.
-- Save this code as a "repl.egi" file
def repl := do
write "input: "
flush ()
let input := readLine ()
write input
print ""
repl
def main args := repl
Then, execute it as follow.
Note that write "input: ", flush (), readLine () and write input are executed in the order.
$ egison repl.egi
input: Hi
Hi
input: Hello
Hello
input: Repl
Repl
input: ^C
$
Check out do expression for more detail.
io primitive function¶
We can use io (primitive function) to execute IO functions anywhere.
For example, the following is a definition of the pureRand function in lib/core/io.egi.
def pureRand s e := io (rand s e)