let rec ints = function n -> Link (n+1, ints)
let rec ints2 n = Link (n+1 ,ints)
哪一种是更好的风格,为什么?
第二个,因为它更短。第一个是图案match
的简写,不能给你买任何东西。
更详细一点,第一个等价于
let rec ints n =
match n with
| n -> Link (n+1, ints)
这是无效的,因为它只是将参数n
绑定到一个遮蔽变量n
。
正如Stephen所说,第一个是低效的。
如果您确实需要,您可以使用fun
关键字:
let rec ints3 = fun n -> Link (n+1, ints)
ints2和ints3在内部表示中几乎相同。我看不出总是使用这种语法有什么意义,因为它只是比ints2长,没有任何优势。
澄清:
一般情况下,您应该使用fun
关键字,但在更合适的情况下。