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