相关疑难解决方法(0)

State,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)]

variables monads haskell state-monad ioref

87
推荐指数
3
解决办法
1万
查看次数

哈斯克尔和国家

Haskell是一种纯函数式编程语言.

我的问题是:使用Haskell解决涉及大量状态的问题有 哪些优点和缺点,例如GUI编程或游戏编程?

还有一个次要问题:有哪些方法以功能方式处理状态?

提前致谢.

monads user-interface state haskell

15
推荐指数
2
解决办法
3351
查看次数

州monad haskell

我想编写一个函数来计算平均值,使用状态Monad in haskell这是我写的代码

import Control.Monad.State
type MyState = (Double,Double)
media s (a,n)= ((a*n+s)/(n+1),n+1)

getAverage:: Double ->State MyState  s1-> Double
getAverage s c=get >>= \s0 -> let (x,s1) =media s s0
            in put s1 >> return x
Run Code Online (Sandbox Code Playgroud)

我在GHCI编译时遇到这个错误,我坚持在那里你可以帮我理解什么是错的,提前谢谢你

monads haskell state-monad

2
推荐指数
1
解决办法
1202
查看次数

标签 统计

haskell ×3

monads ×3

state-monad ×2

ioref ×1

state ×1

user-interface ×1

variables ×1