缓存函数结果 f#

Val*_*lev 5 f# caching

我有一个函数,它的参数是常数,例如

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)

但是我想我深深错了。缓存这样的结果对于函数式语言来说必须是非常常见和简单的事情。