【发布时间】:2013-10-02 02:53:37
【问题描述】:
我需要传递我的状态,同时能够将函数与可能的工作流程链接起来。有没有办法让 2 个工作流共享相同的上下文?如果不是,那是怎么做的?
更新:
嗯,我有一个状态,它代表我要在数据库中创建的实体的一段可用 ID。因此,一旦获取了 ID,就必须将状态转换为具有下一个可用 ID 的更新状态并丢弃,以便没有人可以再次使用它。我不想为了习惯而改变状态。 State monad 看起来像是一种方法,因为它隐藏了转换并传递状态。一旦状态工作流程到位,我就无法使用我在任何地方都使用的 Maybe 工作流程。
【问题讨论】:
-
在 F# 中,计算表达式通常不以这种方式使用。如果您提供有关您要解决的实际问题的更多信息,那么有人可能会建议一个替代的、更惯用的解决方案。
-
不知道更多就很难说,但 F# 直接支持(可变)状态和异常,因此可能不需要使用计算表达式来处理这些。
-
@TomasPetricek,我刚刚添加了一些细节
标签: f# monads monad-transformers state-monad