Functional programming 什么';s类型1与>;类型2->;类型3和类型1->;(类型2->;类型3)?
为什么 及 两者都生成类型为Functional programming 什么';s类型1与>;类型2->;类型3和类型1->;(类型2->;类型3)?,functional-programming,f#,Functional Programming,F#,为什么 及 两者都生成类型为a:int->b:int->int的值, 但是 及 两者都生成类型为a:int->(int->int)的值 int->int周围的大括号是什么意思? 这两种类型在一个程序中做的事情是不同的吗?好吧,没有区别,type1->type2->type3只是type1->(type2->type3)的语法糖 答案很简单:一个具有多个参数的函数被重写为一系列新函数,每个函数只有一个参数。这是由编译器为您自动完成的 就像迈凯轮1129所说,没有区别;您可以将其理解为两个参数的函
a:int->b:int->int
的值,
但是 及 两者都生成类型为
a:int->(int->int)
的值int->int
周围的大括号是什么意思?
这两种类型在一个程序中做的事情是不同的吗?好吧,没有区别,
type1->type2->type3
只是type1->(type2->type3)的语法糖
答案很简单:一个具有多个参数的函数被重写为一系列新函数,每个函数只有一个参数。这是由编译器为您自动完成的
就像迈凯轮1129所说,没有区别;您可以将其理解为两个参数的函数或一个参数的两个函数–这里的括号表示函数,因为如果您只提供第一个参数(type1
),该函数将返回一个采用type2
并返回type3
的函数
curry和partial application是函数式编程的基础,也是代数数据结构的基础,在代数数据结构中,curry/partial application multi-arity函数下至单参数函数是规范
let f1 a b = a + b
let f2 a = fun b -> a + b
let f3 a =
let f =
fun b -> a + b
f
let f4 a =
let f b = a + b
f