#!/usr/bin/ruby


func fib(n) is cached -> Num {
    n < 2 ? n : (fib(n-1) + fib(n-2));
};

say fib(120);


class Fib {
    method nth(n) is cached -> Num {
        n < 2 ? n : (self.nth(n-1) + self.nth(n-2));
    }
    method +(n) is cached -> Num {
        n < 2 ? n : (self+(n-1) + self+(n-2));
    }
}

var fib = Fib();
say fib.nth(120);
say fib+120;