2012-04-03 15 views

答えて

9

それはreferencesを介して行うことができます。

let fact n = 
    let result = ref 1 in (* initialize an int ref *) 
    for i = 2 to n do 
    result := i * !result (* reassign an int ref *) 
    done; 
    !result 

あなたは再帰または高次関数の内部不変の値を使用して同じことを行うことができますので、あなたは非常に頻繁に参照が表示されていない。

​​

副作用のない解決策は、正当性を保証することがより容易であり、正当性を保証することがより容易であるため、好ましい。

+0

ありがとうございました。 ref 0の意味を教えてください。 – EBM

+3

私の答えで参照するリンクを参照してください。基本的に 'ref 0'はレコード' {可変内容:int} 'で、' contents'は '0'で初期化され、' contents'は後で再割り当てすることができます。 – pad

関連する問題