Можно ли считать это чистой функцией? - PullRequest
0 голосов
/ 24 февраля 2019

В настоящее время я разрабатываю функциональное приложение и придерживаюсь концепции ссылочной прозрачности.У меня есть следующая черта

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

Что getAndDeleteOnSuccess должен сделать, это извлечь String из некоторого удаленного хранилища и применить к нему f: String => F[Unit] (который является чистым).В случае успеха String следует удалить из хранилища.Я не могу разделить метод на несколько методов, так как я использую специфичный для хранилища API, который может выполнять такую ​​операцию атомарно.

Вопрос в том, является ли такая функция чистой.Или есть какая-то причина для определения черты как

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

?

...