Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 如何将没有参数的函数转换为单参数函数?_Design Patterns_Functional Programming_F# - Fatal编程技术网

Design patterns 如何将没有参数的函数转换为单参数函数?

Design patterns 如何将没有参数的函数转换为单参数函数?,design-patterns,functional-programming,f#,Design Patterns,Functional Programming,F#,说 坏消息:组合模式只适用于只有一个参数的函数 好消息!每个函数都是一个单参数函数 通过部分应用,我们可以将一个具有两个参数的函数转换为一个具有一个参数的函数。比如说 let add x y = x + y let add x = (fun y -> x + y) let add1 = (+) 1 let three = add1 2 我们如何将一个没有参数的函数转换成一个单参数函数?没有参数的函数,也没有多参数函数的转换。正如引言所说,“每个函数都是一个单参数函数”。总是只有

坏消息:组合模式只适用于只有一个参数的函数

好消息!每个函数都是一个单参数函数

通过部分应用,我们可以将一个具有两个参数的函数转换为一个具有一个参数的函数。比如说

let add x y = x + y 
let add x = (fun y -> x + y)

let add1 = (+) 1  
let three = add1 2 

我们如何将一个没有参数的函数转换成一个单参数函数?

没有参数的函数,也没有多参数函数的转换。正如引言所说,“每个函数都是一个单参数函数”。总是只有一个参数,不多也不少

您可能考虑的一个无参数函数可能是一个函数,它采用一个类型的参数:<代码>单元< /代码>:

let f () = ...
unit
类型只有一个值,
()
(也称为“unit”),因此它不携带任何信息,但从技术上讲它仍然是一个值。您可以将其视为空元组

双参数函数实际上是一个接受一个参数并返回另一个接受另一个参数的函数。记住,函数是一流的,这意味着它们是可以从函数返回并绑定到变量名的值。因此,这两种形式是等价的,前者只是后者的语法糖:

let f a b = ...
let f = fun a -> fun b -> ...

三参数函数是一个函数,返回一个函数,返回一个函数,依此类推。这叫做咖喱。对于curried函数,部分函数应用程序只是普通函数应用程序。函数应用程序恰好返回一个函数而不是其他值。

a)您希望实现什么?您想编写哪些函数?b) 哪一个是没有参数的函数<代码>三不是一个函数,它只是一个值。谢谢。组合模式是如何在函数方面实现的?为了进一步澄清,形式为
let f(a,b)=a+b
的函数不是具有两个参数的函数,而是具有一个类型为
int*int
或“int 2-tuple”的参数的函数。