def fun_a() -> Int? =>
print(11)
if True and True then print("hello")
if False or True then print("world")
def a := None ? 11
if True then return 10 else return None
def fun_b(b: Int) => print(b)
def fun_c_1(b: (Int, Int)) => print(b)
def fun_c_2(b: (Int) -> Str) => print(b)
def fun_d(h: (Str, Str) -> Int) -> Int? => return h("hello", "world")
def fun_e(m: Int, o: (Str, Str), r: (Int, (Str, Str)) -> Int) -> Int => return r(m, o)
def fun_v(y: Str, ab: Str -> Str -> Bool) -> Str -> Bool => return ab(y)
class MyClass(def a: Int, def b: Int)
def some_function(self, c: Int) -> Int =>
def d := 20
d := 10 + 30
return c + 20 + d
def +(self, other: MyClass) -> MyClass => return MyClass(self.a + self.b + other.some_function(self.a), self.b)
def -(self, other: MyClass) -> MyClass => return self + other
def *(self, other: MyClass) -> MyClass => return MyClass(self.a * other.b, self.b)
def /(self, other: MyClass) -> MyClass => return MyClass(self.a // other.b, self.b)
def //(self, other: MyClass) -> MyClass => return MyClass(self.a // other.b, self.b)
def ^(self, other: MyClass) -> MyClass => return MyClass(self.a ^ other.b, self.b)
def =(self, other: MyClass) -> Bool => return self.a = other.b
def >(self, other: MyClass) -> Bool => return self.a > other.b
def <(self, other: MyClass) -> Bool => return self.a < other.b
def sqrt(self) -> MyClass => return MyClass(self.a // self.b, self.a // self.b)
def mod(self, other: MyClass) -> MyClass => return MyClass(self.a mod self.b, self.b)
def factorial(x: Int) -> Int => x * factorial(x - 1)
def some_higher_order(f: (Int) -> Int, x: Int) -> Int => return f(x)
def always_undefined() -> Int? => return None