memory

Package Version Hex Docs

gleam add memory

为函数提供记忆,不支持递归缓存。

不支持javascript端

缓存会单独开启一个进程,如果在并发场景使用的话上一个函数调用会阻塞下一个。

原本并行调用的函数经过处理后变成了串行调用。

Example

import memory

pub fn fibonacci(i: Int) -> Int {
  case i < 0 {
    True -> todo
    False -> fibonacci_loop(0, 1, i)
  }
}

fn fibonacci_loop(a: Int, b: Int, i: Int) -> Int {
  case i {
    0 -> a
    1 -> b
    _ -> fibonacci_loop(b, a + b, i - 1)
  }
}

pub fn main() {
  let assert Ok(#(fibonacci, cache)) = memory.new(fibonacci, 10)

  fibonacci(4) // Ok(3)
  fibonacci(-2) // Error(CallPanic)
  fibonacci(3) // Ok(2)
  
  // 关闭缓存
  memory.closure(cache)

  fibonacci(5) // Error(CallClosed)
}

Development

gleam run   # Run the project
gleam test  # Run the tests
Search Document