Scala-cats:记忆化支持

Ale*_*ndr 5 scala memoization scala-cats

Scalaz 提供 Memo 用于记忆。我希望 scala-cats 也有类似的解决方案。一般来说,我有不同方法的特征:

trait t {
  def f1:Int = ???
  def f2(i:Int):Int = ???
  def f3(i:Int, s:String):String = ???
}
Run Code Online (Sandbox Code Playgroud)

如果 Casts 支持此类解决方案,请举例说明如何:

  1. 使用它来记忆所有以前定义的方法,以防可以修改源?

  2. 如何将其应用于外部代码,将记忆注入到客户端的调用中,而不触及现有服务

  3. 如何控制记忆的生命周期?一般来说,我需要保留每笔交易的结果。控制它的策略是什么?例子也会很棒!