Questions tagged «state-monad»

3
状态,ST,IORef和MVar之间的区别
我正在48小时内完成“ 编写自己的计划”(我大约需要85小时),并且已经完成了有关添加变量和赋值的部分。本章在概念上有很大的跳跃,我希望它分两步完成,并且在两者之间进行了很好的重构,而不是直接跳转到最终解决方案。无论如何… 我迷路了一些不同类的,似乎达到相同的目的:State,ST,IORef,和MVar。文本中提到了前三个,而后三个似乎是很多有关前三个的StackOverflow问题的首选答案。它们似乎在连续调用之间都带有状态。 这些分别是什么,它们又有何不同? 这些句子尤其没有意义: 相反,我们使用一种称为状态线程的功能,让Haskell为我们管理聚合状态。这使我们能够像使用任何其他编程语言一样对待可变变量,使用函数来获取或设置变量。 和 IORef模块使您可以在IO monad中使用状态变量。 所有这些使这条线变得type ENV = IORef [(String, IORef LispVal)]混乱-为什么第二条IORef呢?如果我改写会type ENV = State [(String, LispVal)]怎样?

3
Scalaz State Monad示例
我还没有看到斯卡拉兹州单子的许多例子。有这个例子,但是很难理解,而且似乎在堆栈溢出上只有另一个问题。 我将发布一些我曾玩过的示例,但我欢迎其他示例。此外,如果有人可以提供上的例子,为什么init,modify,put和gets用于将是巨大的。 编辑:这是一个关于状态monad的2小时真棒演示。

2
哈斯克尔的嵌套国家
我正在尝试定义状态机家族,它们的状态有些不同。特别地,更“复杂”的状态机具有通过组合更简单的状态机的状态而形成的状态。 (这类似于面向对象的设置,其中对象具有多个属性,这些属性也是对象。) 这是我要实现的简化示例。 data InnerState = MkInnerState { _innerVal :: Int } data OuterState = MkOuterState { _outerTrigger :: Bool, _inner :: InnerState } innerStateFoo :: Monad m => StateT InnerState m Int innerStateFoo = do i <- _innerVal <$> get put $ MkInnerState (i + 1) return i outerStateFoo …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.