函数式编程

main(){
    // First-Class Functions
    let applyFunc = {
        val: Int64, fn: (Int64) -> Int64 => fn(val)
    }

    // Higher-Order Functions
    let double = {x: Int64 => x * 2}
    let square = {x: Int64 => x * x}

    // Function Composition
    let compse = {
        f: (Int64) -> Int64, g: (Int64) -> Int64 => {
            x: Int64 => g(f(x))
        }
    }
    let doubleAfterSquare = square ~> double // compse(square, double)

    applyFunc(5) {it => it + 3} |> println
    doubleAfterSquare(3) |> println  
}