我有一個函數,是恆定的以它的參數,例如緩存功能結果f#
let is_prime x = (test)
但它是相當大的和緩慢的。所以我希望它的結果只需計算一次,而我只是按照自己的需要經常調用它。
我試圖做到這一點的方式我這麼做是不是功能性的語言:
let _is_prime x = (test)
let mutable _is_prime_primes = []
let mutable _is_prime_tested = []
let is_prime x =
if List.exists (fun el -> el = x) _is_prime_primes then
true
else
if List.exists (fun el -> el = x) _is_prime_tested then
false
else
let result = _is_prime x
if result then _is_prime_primes <- x :: _is_prime_primes
_is_prime_tested <- x :: _is_prime_tested
result
但是我覺得我深深錯誤。緩存這樣的結果對於函數式語言來說必須是非常普通和簡單的。
看到這個關於memoization的答案:http://stackoverflow.com/questions/833180/handy-f-snippets/851449#851449 – Benjol 2010-01-04 12:53:17