微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决这个“带结果的状态函数”模式有名字吗? 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>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?