fn first(a, b: int): int { return a; } fn second(a, b: int): int { return b; } fn last(a, b, c: int): int { return c; } fn middle(a, b, c: int): int { return last(a, c, b); } fn first(a, b, c: int): int { return middle(b, a, c); } first(1, 2, 3); var x = first(second(1, 2), 3);