Current section

Files

Jump to
memory README.md
Raw

README.md

# memory
```sh
gleam add memory
```
为函数提供记忆,不支持递归缓存。
不支持javascript端
缓存会单独开启一个进程,如果在并发场景使用的话上一个函数调用会阻塞下一个。
原本并行调用的函数经过处理后变成了串行调用。
# Example
```gleam
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)
}
```
[![Package Version](https://img.shields.io/hexpm/v/memory)](https://hex.pm/packages/memory)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://memory.hexdocs.pm/)
## Development
```sh
gleam run # Run the project
gleam test # Run the tests
```