功能编程短路

时间:2019-11-27 14:13:04

标签: kotlin arrow-kt

我正在研究函数式编程,即Arrow-ktKotlin

我的用例如下:

我想执行Action并返回关联的Reaction

ActionReaction都关联了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结果

上述副作用包括LoggingAnalyticsUser Interface效果。

我觉得ActionReaction副作用必须立即触发的要求意味着功能性编程解决方案不适合我的用例

我发现的Arrow-kt演示文稿和博客描述了如何基于出现的错误条件或将EitherOption和{ {1}}实现相同的行为。

我遇到的困难

i)。从哪里开始????

ii)。只需完成四个步骤,如何控制/管理“短路”,以便完成步骤1-4,仅步骤1或仅步骤4

使用函数式编程能否实现所需的行为?

1 个答案:

答案 0 :(得分:3)

适合您的情况的最佳出发点是https://arrow-kt.io/docs/patterns/error_handling/

如果您想产生诸如日志记录之类的副作用,您最容易做的就是将所有suspend函数都标记为不纯。这样,您的整个程序将是一系列暂停函数调用。

您必须首先执行第一个暂停功能,或者执行诸如Activity#onCreateController之类的业务逻辑的开始。要执行第一个暂停功能,请使用IO { myBusinessLogic() }.unsafeRunAsync { }