1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
[comments in square brackets]
[preprocessor directives]
#INCLUDE 'math.halk'; [looks for a 'math.halk' file in the cwd, then ~/halk/include]
#INCLUDE 'io' AS ''; [bring everything in 'io' into global scope]
let.hello -> 'hello, '; [variables must be given a value at declaration]
let.PI => math:PI; [namespaces are accessed with a ':'']
[constants are denoted with a '=>']
fn.greeting,to -> { [functions defined with: `fn.<name>,<argument>,..., -> {<body>};`]
let.message -> strcat.hello,to; [functions are right-associative]
stdo.message; [since 'io' was brought into global scope, we
do not prefix it with a namespace/]
};
fn.sum_all,_ -> { [variadic functions are possible with the reserved '_' argument,
which is treated as an array]
return.foldl.sum,0,_;
};
fn.fibonacci,n -> {
if.or.(eq.n, 0), (eq.n, 1) -> { [functions ending in '?' should be predicates]
return.1;
};
return.sum.
(fibonacci. sub.n, 1),
(fibonacci. sub.n, 2);
};
fn.main -> { [where our code will begin executing]
greeting.[comments can be placed *anywhere*]'world.';
exit.0; [exit with code 0 for success]
};
|