在咖喱和撰写的这些实现中:
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))
没有问题编译?
答案 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