我正在研究函数式编程,即使用Kotlin的Arrow-kt
我的用例如下:
我想执行一个Action并返回相关的Reaction
Action和Reaction都有关联的Side Effects
事件的顺序是
1)。在接受Action时,立即触发关联的Actions Side Effects
2)。执行Action并获取Reaction
3)。触发Reactions Side Effects
4)。返回Reaction结果。
请求执行操作时需要考虑的其他因素
a)。如果从未执行过该操作,请完成整个序列,例如步骤1- 4。
b)。执行Action时,将序列短路,使步骤2-4不能完成
c)。当Action完成后,短路步骤1-3并返回Reaction结果
上面提到的副作用包括Logging、Analytics和User Interface效应。
我有一种感觉,我要求立即触发Action和Reaction副作用,这意味着函数式编程解决方案不适合我的用例
我找到的Arrow-kt演示文稿和博客描述了如何使用Either根据引发的错误条件来短路序列,或者如何将Option与Some和None一起使用来实现相同类型的行为。
我遇到困难的地方
i)。从哪里开始?
ii)。有四个步骤要完成,如何控制/管理“短路”,以便完成步骤1 - 4、步骤1或步骤4
是否有可能使用函数式编程来实现所需的行为?
发布于 2019-11-30 18:47:03
您的案例的最佳起点是https://arrow-kt.io/docs/patterns/error_handling/
如果你想做一些副作用,比如日志记录,你可以做的最简单的事情就是把它们都变成suspend函数,把它们标记为不纯。这样一来,你的整个程序将会是一个挂起函数调用链。
您必须在main中执行第一个挂起函数,或者执行诸如Activity#onCreate或Controller之类的业务逻辑的请求。使用IO { myBusinessLogic() }.unsafeRunAsync { }执行第一个挂起功能
https://stackoverflow.com/questions/59072111
复制相似问题