我有一个函数,它的参数是常数,例如
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
但我认为我大错特错。缓存这样的结果对于函数式语言来说必须是非常常见和简单的事情。
最佳答案
这是Internet Archive关联。
关于缓存函数结果 f#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1976705/