-
Notifications
You must be signed in to change notification settings - Fork 2
/
app.lily
104 lines (87 loc) · 1.66 KB
/
app.lily
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package App =
.a;
end
// import "@sys";
// import "@builtin";
//
// macro write($s expr) = {
// @sys.write(1, {|s|}, @len({|s|}))
// };
// type Person record =
// name Str;
// age Uint8;
// end
//
// type MyType record =
// color Color;
// end
//
// type Color enum =
// Hex:Uint8;
// Rgb:(Uint8, Uint8, Uint8);
// R;
// end
//
// type MyValue[T] record =
// value T;
// end
// type Letter enum =
// A;
// B;
// C;
// end
// fun add(x, y) = return x + y; end
// fun add(x) =
// if true do
// return x;
// elif x do
// return x;
// else
// return false;
// end
// end
// fun `==`(x Int32, y Int64) Bool = return x cast Int64 == y; end
// fun add(x Int32, y Int32) Int32 = return x + y; end
// fun add[T](x T) T = return x; end
// fun add2[T](x T) T = return add::[T](x); end
// fun add3[T](x T) T = return add2::[T](x); end
// error Invalid;
// fun get_err(n Int32) =
// if n == 0 do
// raise Invalid;
// end
//
// return n;
// end
module Operation =
fun add(x, y) = x + y end
end
type MyInt alias = Int32;
type MyInt2 alias = MyInt;
val (A Int32, B Int32) := (10, 40);
fun main =
// val x := global.add3::[Int32](34);
// val y := global.add3::[Int64](34);
// val z := global.add3::[Int64](y);
// val u MyInt2 := 30;
// val d := MyValue { value := 40 };
// val e := MyValue { value := "Hello" };
// val a := 30;
// val c := add(2, 4);
// mut d := true or false and true or true or false;
// mut e := d;
// d = false;
// mut f := d;
val a := Operation.add(2, 3);
val b := Operation.add(40, 10);
// match a do
// 1 ? c == 0 => ();
// 2 => ();
// 3 => ();
// _ => ();
// end
// try do
// get_err(404);
// catch do
// end
end