В scala именованная функция определяется как:
scala> def addOne(x: Int): Int = x+1
addOne: (x: Int)Int
scala> :type addOne
(x: Int)Int
И анонимный как:
scala> val addOne = (x:Int) => x+1
addOne: Int => Int = <function1>
scala> :type addOne
Int => Int
Почему их типы выглядят иначе?
Почему нельзя передать именованную функцию в качестве аргумента другой функции?
Не следует ли рассматривать и то и другое единообразно с точки зрения типа и поведения первого порядка?