以下哪一种是f#中函数定义的更好样式?

以下哪一种是f#中函数定义的更好样式?,f#,ml,F#,Ml,以下哪种样式更好?为什么?第二种样式,因为它较短。第一个是模式匹配的缩写,它不会给你买任何东西 关于更多细节,第一个相当于 let rec ints = function n -> Link (n+1, ints) let rec ints2 n = Link (n+1 ,ints) 这是无效的,因为它只是将参数n绑定到一个隐藏变量n,正如Stephen所说,第一个是无效的 如果确实需要,可以使用fun关键字: let rec ints n = match n with |

以下哪种样式更好?为什么?

第二种样式,因为它较短。第一个是模式
匹配的缩写
,它不会给你买任何东西

关于更多细节,第一个相当于

let rec ints = function n -> Link (n+1, ints) 
let rec ints2 n = Link (n+1 ,ints)

这是无效的,因为它只是将参数
n
绑定到一个隐藏变量
n

,正如Stephen所说,第一个是无效的

如果确实需要,可以使用
fun
关键字:

let rec ints n = 
  match n with
  | n -> Link (n+1, ints) 
ints2和ints3在内部表示中几乎相同。我看不出总是使用这种语法有什么意义,因为它只比ints2长,没有任何优势

澄清:


一般情况下,您应该使用
fun
关键字,但在更合适的场景中。

注意,有一些示例表明
fun
不起作用-
let t=function|uu1
编译,但
let t=fun|u1
不编译
fun
函数
不相同,而是使用参数。当然,
函数
,只是在他的例子中没有。从技术上讲,第二个函数是模式匹配的简写形式,只有一个匹配案例。见:
let rec ints3 = fun n -> Link (n+1, ints)