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

これらのうちどれがより良いスタイルで、その理由は?

4

2 に答える 2

2

短いので2枚目。最初のものは pattern の省略形であり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 に答える