在这个函数中(a:A)是(a)的句法糖?

时间:2015-09-17 09:03:46

标签: scala syntax syntactic-sugar

在咖喱和撰写的这些实现中:

def uncurry[A,B,C] (f : (A => B => C)) : (A , B) => C =  (a , b) => f(a) (b)

def compose [A ,B , C] (f : B => C , g : A => B) : A => C = (a : A) => f(g(a))

在撰写实现中,(a : A)只是(a)的语法糖

def compose [A ,B , C] (f : B => C , g : A => B) : A => C = (a : A) => f(g(a))

没有问题编译?

1 个答案:

答案 0 :(得分:2)

是的,但反过来说:(a)(a:A)的语法糖,因为编译器可以推断a的类型为A。您甚至不需要(a)的括号:

 def compose [A ,B , C] (f : B => C , g : A => B) : A => C = a => f(g(a))

不一定与问题相关,但对于这种特殊情况,该功能已经可用,因此您可以这样做:

def compose [A ,B , C] (f : B => C , g : A => B) : A => C = f compose g