我有三个应该是平等的功能:
let add1 x = x + 1
let add2 = (+) 1
let add3 = (fun x -> x + 1)
Run Code Online (Sandbox Code Playgroud)
为什么这些方法的类型不同?
add1和add3是int -> int,但add2是(int -> int).他们都按预期工作,我只是好奇为什么FSI以不同的方式呈现它们?
kvb*_*kvb 16
这通常是一个不重要的区别,但如果您真的很好奇,请参阅F#规范的Arity Conformance for Values部分.
我的快速摘要将是它(int -> int)的超集int -> int.由于add1和add3是语法函数,它们被推断为具有更具体的类型int -> int,add2而是函数值,因此推断为具有类型(int -> int)(并且不能被视为a int -> int).
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |