我最近开始学习F#并遇到curried函数,用于简单示例,如下所示:
考虑一个通过将价格乘以销售p单位数来计算销售额的函数n.
let sales (p,n) = p * (float n);;
Run Code Online (Sandbox Code Playgroud)
该函数的类型为
val sales : p:float * n:int -> float
Run Code Online (Sandbox Code Playgroud)
即采取对float和int并返回float.
我们可以把它写成一个curried函数
let salesHi p n = p * (float n);;
Run Code Online (Sandbox Code Playgroud)
该函数的类型为
val salesHi : p:float -> n:int -> float
Run Code Online (Sandbox Code Playgroud)
即需要一个float和返回功能的int到float.
在简单的情况下,这似乎没有区别
sales (0.99, 100);;
salesHi 0.99 100;;
Run Code Online (Sandbox Code Playgroud)
两者都给
val it : float = 99.0
Run Code Online (Sandbox Code Playgroud)
然而,通过咖喱功能,我可以为特定项目提供价格以获得新功能.例如
let salesBeer = salesHi 5.99;;
let salesWine …Run Code Online (Sandbox Code Playgroud)