Scala Función de orden superior llamando por nombre. tiene sentido

Sólo quiero aclarar. Si usamoshigher-order function (f. que acepta otra función como argumento). ¿Tiene algún sentido especificar"=>" firmar para llamarloby-name. Parece que la función arg está llamandoby-name ¿de todos modos?

Hay un ejemplo:

// 1.
  // the function that accepts arg-function with: two int params and returning String
  // the function passing v1 & v2 as parameters to arg-function, invoking arg-function 2 times, connecting the result to one string
  def takeFunction1(f: (Int, Int) => String, v1:Int, v2:Int ): String = {
     f(v1, v2) + f(v1, v2)
  }

  // 2. same as #1 but calling arg-function by-name
  def takeFunction2(f: => ((Int, Int) => String), v1:Int, v2:Int ): String = {
    f(v1, v2) + f(v1, v2)
  }    

  def aFun(v1:Int, v2:Int) : String = {
    (v1 + v2).toString
  }

  // --

 println( takeFunction1( aFun, 2, 2) )

 println( takeFunction2( aFun, 2, 2) )

¿Y si quiero llamarlo así?:

println( takeFunction2( aFun(2,2)), ... ) // it tries to evaluate immediately when passing

Respuestas a la pregunta(2)

Su respuesta a la pregunta