我有一个函数,它的参数是常数,例如
let is_prime x = (test)
Run Code Online (Sandbox Code Playgroud)
但它非常大而且速度很慢。所以我希望它的结果只计算一次,而我可以随时调用它。
我试图以一种非函数式语言的方式做到这一点:
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
Run Code Online (Sandbox Code Playgroud)
但是我想我深深错了。缓存这样的结果对于函数式语言来说必须是非常常见和简单的事情。