0

我目前正在设计一个功能性应用程序并坚持引用透明度的概念。我有以下特点

trait RemoteStringStorage[F[_]]{
    def getAndDeleteOnSuccess(f: String => F[Unit]): F[Unit]
}

getAndDeleteOnSuccess应该做的是从一些远程存储中提取 a并将String其应用f: String => F[Unit](这是纯粹的)。如果成功,String则应从存储中删除。我无法将该方法拆分为多个方法,因为我使用可以原子执行此类操作的特定于存储的 API。

问题是这样的功能是否纯粹。或者有什么理由将特征定义为

trait RemoteStringStorage[F[_]]{
    def getAndDeleteOnSuccess(f: F[String => F[Unit]]): F[Unit]
}

?

4

0 回答 0