=> is syntactic sugar for creating instances of functions. Recall that every function in scala is an instance of a class.
For example, the type Int => String, is equivalent to the type Function1[Int,String] i.e. a function that takes an argument of type Int and returns a String.
scala> val f: Function1[Int,String] = myInt => "my int: "+myInt.toString
f: (Int) => String =
scala> f(0)
res0: String = my int: 0
scala> val f2: Int => String = myInt => "my int v2: "+myInt.toString
f2: (Int) => String =
scala> f2(1)
res1: String = my int v2: 1
Here myInt is bound to the argument value passed to f and f2.
() => T is the type of a function that takes no arguments and returns a T. It is equivalent to Function0[T]. () is called a zero parameter list I believe.
scala> val f: () => Unit = () => { println("x")}
f: () => Unit =
scala> f()
x
scala> val f2: Function0[Unit] = () => println("x2")
f: () => Unit =
scala> f2()
x2