这个“带结果的状态函数”模式有名字吗? FSharpPlus 中的抽象?

问题描述

我有一个 'state -> 'event -> Result<'state * 'result,'error> 类型的函数我有一个起始 'state'event list

如果所有折叠都没有问题,或者第一个错误,我想折叠事件并获得最终状态和产生的结果列表。

我可以写一个计算表达式或为它折叠,但想知道这个模式是否有一个名字?我可以使用 FSharpPlus 开箱即用的东西吗?看起来很像状态 monad,但是状态和结果都包裹在 Result 类型中,所以它有点像状态 + 结果 monad?

解决方法

正如@carsten 已经指出的那样,您在 F#+ 中有 **Gradle sync failed: Unsupported class file major version 60** 可用

你有:

StateT

现在让我们交换一些参数:

'state -> 'event -> Result<'state * 'result,'error>

可以表示为

'event -> 'state -> Result<'result * 'state,'error> 在当前 F#+ StateT 编码中。

所以,让我们调用您的函数 StateT<'state,Result<'result * 'state,'error> 并假设您有 f,它是一个 events(或实际上任何其他可遍历的事件结构),现在您可以这样做:

list<'event>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...