kotlin function types
Function types ()->Unit - takes no arguments and returns nothing (Unit). (Int, Int)->Int - takes two arguments of type Int and returns Int. (()->Unit)->Int - takes another function and returns Int. (Int)->()->Unit - takes argument of type Int and returns function.