Hello World (Hume)
From LiteratePrograms
- Other implementations: Ada | ALGOL 68 | Alice ML | Amiga E | Applescript | AspectJ | Assembly Intel x86 Linux | Assembly Intel x86 NetBSD | AWK | bash | BASIC | Batch files | C | C, Cairo | C, Xlib | Candle | Clojure | C++ | C# | Delphi | Dylan | E | Eiffel | Erlang | Forth | FORTRAN | Fortress | Go | Groovy | Haskell | Hume | IBM PC bootstrap | Inform 7 | Java | Java, Swing | JavaScript | LaTeX | Lisp | Logo | Lua | Maple | MATLAB | Mercury | OCaml/F Sharp | occam | Oz | Pascal | Perl | PHP | Pic | PIR | PLI | PostScript | Prolog | Python | Rexx | Ruby | Scala | Scheme | Seed7 | sh | Smalltalk | SQL | Standard ML | SVG | Tcl | Tcl Tk | Visual Basic | Visual Basic .NET | XSL
This example shows the well-known "Hello World!" example implemented in Hume as output of a counter automaton.
Lets specify output
<<I/O bindings>>= -- I/O bindings stream output to "std_out" ;
Define automaton (box in Hume) inputs, outputs and body. This is the main program loop. Each box runs in a separate thread.
<<box definitions>>= -- box definition box hello in (count_in::int 32) -- inputs out (count_out::int 32, shown::(string, int 32, char)) -- outputs (result roles and types) -- body match -- match patterns structure must conform to inputs -- corresponding expressions must conform to the declared 'out' type -- declaration role names are in sole interest of wiring statements 99 -> (0, ("Hello World ", 99,'\n')) -- reset count_out to 0 | count -> (count +1, ("Hello World ", count,'\n')) ;
Wire box (thread) outputs and inputs generating mailboxes
<<wirings>>= wire hello -- inputs wiring for "in" parameters (hello.count_out initially 0) -- get hello.count_in from hello.count_out -- outputs wiring for "out" result tuple (hello.count_in, output) ; -- put hello.count_out to hello.count_in, hello.shown to output
The whole program
<<HelloWorld.hume>>= -- HelloWorld.hume I/O bindings box definitions wirings
Execute with the Hume interpreter
./hume HelloWorld.hume
and the output is
Hello World 0 Hello World 1 Hello World 2 ...
Alternatively the construct expression is equivalent to a box with no inputs, and one output to std_out
The program does not end until you type Ctrl+C.
<<HelloWorld2.hume>>= -- HelloWorld2.hume expression "Hello World\n" ;
Download code |