gpt4 book ai didi

haskell - 如何很好地评估嵌套的 StateT 和 ErrorT monad?

转载 作者:行者123 更新时间:2023-12-02 18:55:06 26 4
gpt4 key购买 nike

我在程序中的不同级别有两个控制结构的类型声明。最底层是Agent,它是一个具有IO 功能的StateT。第二个是另一个具有 Agent 功能的 StateT,第三个 (Plan) 是一个 ErrorT

type Agent = StateT AgentState IO
type Plan = ErrorT PlanError (StateT PlanState Agent)

评估计划的最佳方法是什么?我编写了以下代码,但它不是很少,因为有大量嵌套的 runStateTrunErrorT 调用。

foo :: Plan ()
defaultAgentState :: AgentState
runStateT (runStateT (runErrorT foo) (PlanState 0)) defaultAgentState

有没有更简单/更好的东西?

最佳答案

如果您有一个 monad 转换器堆栈,则必须在某个时刻调用各个转换器的每个 runXyzT 函数,遗憾的是没有快捷方式。

但是,如果您多次使用特定堆栈,则值得定义一个特殊的 runMyStack 函数,以便堆栈 runXyzT 的困惑仅出现在一分。

关于haskell - 如何很好地评估嵌套的 StateT 和 ErrorT monad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9414839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com