scala/ScalaBook/chapter-02/func.scala

import Function.uncurried, Function.curried
var inc = (x:Int) => x+1
println(inc(2)) 
var mul = (x: Int) => (y:Int) => x*y
println(mul(3)(4))

var mul3 = mul(3)
println(mul3(4))

var mul_pair = uncurried(mul)
println(mul_pair(3,4))

def add(x:Int, y:Int) = x + y
val addCurried = curried(add _)
println(addCurried(4)(6))

def fmul(x:Double) = x*3
def derivative(f: (Double => Double), dx: Double) =
   (x: Float) => (f(x + dx) - f(x)) / dx

println("====derivatives====")
var der = derivative(fmul, 0.1)
var der2 = derivative(((x:Double) => x*3), 0.1)
println(der(5))
println(der2(5))

println("====hello====")
def sayHello2(n : String): Unit =
    return println("Hello "+n)

var say2=sayHello2("Jane")
say2