【发布时间】:2015-10-30 04:10:28
【问题描述】:
在阅读this excellent series 上的状态单子(和其他……东西)后,我尝试在不使用可变变量的情况下重现以下场景(改编自一个计算点击次数的简单 UI):
let mutable count = 1
let increment () = count <- count + 1
我想不出办法。
是否可以在不使用可变变量的情况下在 F# 中进行处理?其他根本不允许不变性的函数式语言如何处理它?还是我问错了问题?
【问题讨论】:
-
“我不成功”是什么意思?发生了什么,或者您遇到了什么错误?
-
只是一个简短的评论:我知道的所有实用相关语言(当然包括 Haskell)都将允许您在某些时候改变某些状态(并更新您的数据库)纯语言的想法。是将它尽可能地推到应用程序的边界(在 Haskell 中,这可能是
main中臭名昭著的IO类型) - F# 不是纯的,通常被认为是好的 - 在你的例子中大多数 F#ers 不会使用 StateMonad(因为你无法在没有 man 的情况下构建 MonadStacks。无论如何,大多数时候重写这不是一个选项)
标签: f# functional-programming immutability monads