F#能为管理不确定性提供什么?
在与现实世界对话的应用程序中,使用非确定性函数是不可避免的。明确区分确定性和非确定性是很重要的 Haskell有一个IO单子,它通过观察我们知道它之外的一切都是纯净的来设置不纯净的环境。这很好,如果你问我的话,当涉及到单元测试时,你可以知道他们的代码的哪一部分最终是可测试的,哪一部分不是F#能为管理不确定性提供什么?,f#,purely-functional,F#,Purely Functional,在与现实世界对话的应用程序中,使用非确定性函数是不可避免的。明确区分确定性和非确定性是很重要的 Haskell有一个IO单子,它通过观察我们知道它之外的一切都是纯净的来设置不纯净的环境。这很好,如果你问我的话,当涉及到单元测试时,你可以知道他们的代码的哪一部分最终是可测试的,哪一部分不是 我找不到任何东西可以在F#中将两者分开。这是否意味着没有办法做到这一点?F#基于OCaml,与OCaml非常相似,它不是纯FP。我认为用这两种语言都无法实现你的目标 确定性和非确定性功能之间的区别不是F#型系统
我找不到任何东西可以在F#中将两者分开。这是否意味着没有办法做到这一点?F#基于OCaml,与OCaml非常相似,它不是纯FP。我认为用这两种语言都无法实现你的目标 确定性和非确定性功能之间的区别不是F#型系统所能捕捉到的,而是需要处理非确定性的典型F#系统将使用某种结构(或“设计模式”)来明确区分两者
- 如果您的核心模型是一些不与外界交互的计算(您只需要收集输入并运行计算),那么您可以将大部分代码编写为不可变数据结构上的函数转换,然后从一些“主”I/O循环调用它们
- 如果您正在编写一些高交互性或反应性的应用程序,那么您可以使用F#agents(如下所示)并构造您的应用程序,以便将非确定性安全地包含在各个代理中(请参阅)