let rec ints = function n -> Link (n+1, ints)
let rec ints2 n = Link (n+1 ,ints)
其中哪一个是更好的风格?为什么?
答案 0 :(得分:2)
第二个,因为它更短。第一个是模式match
的简称,不会给你买任何东西。
稍微详细一点,第一个相当于
let rec ints n =
match n with
| n -> Link (n+1, ints)
这是非生产性的,因为它只是将参数n
绑定到阴影变量n
。
答案 1 :(得分:1)
斯蒂芬说,第一个效率低下。
如果您确实需要,可以使用fun
关键字:
let rec ints3 = fun n -> Link (n+1, ints)
ints2和ints3在内部表示中几乎相同。我认为总是使用这种语法没有意义,因为它只比ints2长,并且没有任何优势。
澄清:
您应该使用fun
关键字,但在更合适的情况下。