Haskell程序员在提到非确定性时意味着什么?我读过这个列表monads可以用于模型非确定性,但是确定列表不是确定性的吗?对非确定性建模意味着什么?据我所知,这只是意味着为一组计算返回一组所有可能的结果。Haskell中的非确定性是什么?
2
A
回答
4
你的理解是正确的。列表monad捕获的非确定性确实涉及可以返回多个可能结果的计算(函数)。
也就是说,计算f
该不确定地从B
类型的输入计算A
类型的输出然后在通过使用带A
类型的值来列表B
类型的值的的函数表示的Haskell:
f :: A -> [B]
然后,如果我们也有计算g
该-也从B
类型的输入不确定地-计算C
类型的输出,
g :: B -> [C]
我们可以撰写这些计算以获得组合计算h
这需要A
类型的输入以C
类型的输出:
h :: A -> [C]
在Haskell,定义这样的功能h
包括应用所述函数g
到每应用f x
的可能结果,然后将由此获得的列表可能结果的列表展平为h
:
h x = concat zs where zs = concat [g y | y <- f x]
正是这种成分是通过列表单子拍摄,让你写:
h x = f x >>= g
甚至
h = f >=> g
+1
非常感谢。其他地方我没有这么清楚地解释过。 – andro 2014-12-03 09:17:21
相关问题
- 1. NP中的非确定性是什么?
- 2. 为什么功率集在haskell中被认为是非确定性的例子?
- 3. 什么是非确定性程序?
- 4. 为什么T-SQL中的LAG函数是非确定性的?
- 5. 为什么并发haskell不确定,而并行haskell原语(par和pseq)是确定性的?
- 6. Promela - 非确定性不是非确定性的?
- 7. SQL 2005为什么说这个UDF是非确定性的?
- 8. 访问非确定性资源的最佳方法是什么?
- 9. 什么是*确定性并发性*?
- 10. Haskell的主要特性是什么?
- 11. Haskell的定义是什么意思?
- 12. 是什么。在Haskell中做什么?
- 13. 确定性函数是非确定性的
- 14. 是什么()在Haskell
- 15. CONVERT是非确定性的吗?
- 16. elasticsearch是非确定性的吗?
- 17. Haskell的扩展是什么?
- 18. 什么是Haskell的Stream Fusion
- 19. 非确定性parsererror
- 20. 入侵的确切含义是什么?什么让Spring非侵入性?
- 21. Haskell中的ConcurrentHashMap的模拟是什么?
- 22. 什么是在Haskell函数中定义参数的正确方法
- 23. 什么是Haskell中的嵌套模式?
- 24. Haskell中的':'是什么意思?
- 25. 什么是Haskell中的“::”等价函数?
- 26. Haskell Prelude中'const'的含义是什么?
- 27. Haskell中的(:=)是什么意思?
- 28. “ls”在Haskell中的含义是什么?
- 29. Haskell中的实例是什么意思?
- 30. haskell中的“&”是什么意思?
[这太问题(http://stackoverflow.com/questions/20638893/how-can-non-determinism-be-modeled-with-a-list-monad)可能会有所帮助。 – ErikR 2014-12-03 07:52:20