| 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
 | fn fib(n: i32): i32 {
    val msg = if (n == 0)   "No points"   else    "Some points"
    val msg = if  n == 0  { "No points" } else  { "Some points" } 
    val msg = if  n == 0:   "No points"   else:   "Some points"
    if n == 0 || n == 1 {
        return n;
    }
    var grandparent = 0;
    var parent = 1;
    var me = 0;
    for i in 0..n-1 {
        me          = parent + grandparent;
        grandparent = parent;
        parent      = me;
    }
    return me;
}
pub type Button = {
    pub x: i32,
    pub y: i32,
    text: String,
}
impl Button {
    fn init(text) {
        return Self(
            x: 50,
            y: 150,
            text, # Pass in text
        )
    }
}
impl Constructor for Button {
    fn init(text) {
        Self(
            x: 50,
            y: 150,
            text, # Pass in text
        )
    }
}
Button::init("Hello")
Button("Hello")
print(fib(0));
print(fib(1));
print(fib(2));
print(fib(3));
print(fib(4));
print(fib(5));
# Inferred as List
val nums = read("input.txt")
    .lines()
    .filter(-> /$[0-9]+^/ in $0)
    .collect()
fn T <- From<Self> = List collect(self): T {
}
fn collect(self): 'a
where 
    'a : From<Self>, # Type Constraints
    'a = List,       # Generic Defaults
    'a : From<Self> = List, # Combined
{
    # 
}
# This following code should
fn add(lhs, rhs) {
    return lhs + rhs;
}
# Ideally infer to
fn add(lhs: 'a, rhs: 'b): 'c 
where
    'a : Add<'b, 'c>,
    'b = 'a,
{
    return lhs + rhs;
}
 |