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

哪种风格更好,为什么?

4

2 回答 2

2

第二个,因为它更短。第一个是模式的简写match,不会给你带来任何好处。

更详细一点,第一个相当于

let rec ints n = 
  match n with
  | n -> Link (n+1, ints) 

这是非生产性的,因为它只是将参数绑定n到阴影变量n

于 2011-09-19T01:54:30.503 回答
1

正如斯蒂芬所说,第一个效率低下。

如果你真的想要,你可以使用fun关键字:

let rec ints3 = fun n -> Link (n+1, ints)

ints2 和 ints3 在内部表示中几乎相同。我认为总是使用这种语法没有意义,因为它只是比 ints2 长而且根本没有任何优势。

澄清:

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

于 2011-09-19T05:46:44.827 回答