相关疑难解决方法(0)

什么时候应该以咖喱形式写我的功能?

我最近开始学习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)

即采取对floatint并返回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和返回功能intfloat.

在简单的情况下,这似乎没有区别

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)

f# functional-programming

25
推荐指数
1
解决办法
2582
查看次数

标签 统计

f# ×1

functional-programming ×1