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 = List collect(self): T { } fn collect(self): 'a where 'a : From, # Type Constraints 'a = List, # Generic Defaults 'a : From = 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; }