我有一个函数,是恒定的以它的参数,例如缓存功能结果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