使用计算表达式在函数中重新赋值变量

时间:2017-06-07 15:22:42

标签: .net haskell f# monads computation-expression

根据问题How can I re-assign a variable in a function in Haskell?,有一个haskell解决方案可以更改Congo 0中的刚果大象总数function

main' :: StateT Congo IO ()
main' =
  do
    printElephant
    function 2
    printElephant

-- run program:
main :: IO ()
main = Congo 0 & runStateT main' & void
-- outputs:
0
2

阅读Computation Expression series后,我仍然不知道如何正确地为这个问题编写CE构建器。如何使用F#的CE重新分配函数中的变量?

1 个答案:

答案 0 :(得分:3)

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

let mutable elephant = 0
printfn "Elephant = %d" elephant
elephant <- 2
printfn "Elephant = %d" elephant