Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在具有计算表达式的函数中重新指定变量_.net_Haskell_F#_Monads_Computation Expression - Fatal编程技术网

.net 在具有计算表达式的函数中重新指定变量

.net 在具有计算表达式的函数中重新指定变量,.net,haskell,f#,monads,computation-expression,.net,Haskell,F#,Monads,Computation Expression,基于此问题,有一个haskell解决方案可以更改函数中的刚果象总数刚果0: main'::StateT刚果IO() 主要的= 做 印象 职能2 印象 --运行程序: main::IO() main=0&runStateT main'&void --产出: 0 2. 在阅读了之后,我仍然不知道如何正确地为这个问题编写CE生成器。如何在具有F#的CE的函数中重新分配变量?F#对命令式编程构造有一流的支持。您只需要将let绑定标记为mutable。在这种情况下,不需要计算表达式: let mutab

基于此问题,有一个haskell解决方案可以更改
函数中的刚果象总数
刚果0

main'::StateT刚果IO()
主要的=
做
印象
职能2
印象
--运行程序:
main::IO()
main=0&runStateT main'&void
--产出:
0
2.
在阅读了之后,我仍然不知道如何正确地为这个问题编写CE生成器。如何在具有F#的CE的函数中重新分配变量?

F#对命令式编程构造有一流的支持。您只需要将let绑定标记为
mutable
。在这种情况下,不需要计算表达式:

let mutable elephant = 0
printfn "Elephant = %d" elephant
elephant <- 2
printfn "Elephant = %d" elephant
让可变象=0
printfn“大象=%d”大象

大象:你必须更详细地解释你想做什么。Haskell代码的一个片段(缺少关键部分)似乎无法解释您试图在F#中实现什么。F#不像Haskell那样纯粹,并且内置了可变变量。或者你是在问如何在F#?@MiP中实现状态单子-既然你已经阅读了计算表达式系列,你想知道如何实现状态单子,那么你读的下一个系列几乎肯定是,Scott Wlaschin幽默地解释了这个特殊模式,他通常的优秀图表,这是一个非常有趣的比喻。@dfeur您可以在第一个链接中看到代码。Haskell与F#相比似乎太不一样了,所以我不完全知道如何将这段代码翻译成F#。到目前为止,您尝试了什么?虽然
mutable
可以处理大多数用例,但我的问题是如何在F#中实现状态monad。