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
。
正如斯蒂芬所说,第一个效率低下。
如果你真的想要,你可以使用fun
关键字:
let rec ints3 = fun n -> Link (n+1, ints)
ints2 和 ints3 在内部表示中几乎相同。我认为总是使用这种语法没有意义,因为它只是比 ints2 长而且根本没有任何优势。
澄清:
您应该fun
在一般情况下使用关键字,但在更合适的情况下使用。