3
給定一組[1,2,3],功率集是唯一的。我們爲什麼說它是非確定性的?考慮另一個例子爲什麼功率集在haskell中被認爲是非確定性的例子?
[1,2] >>= \n -> ['a','b'] >>= \ch -> return (n,ch)
爲什麼這個函數是非確定性的?
如果我認爲\ch -> return (n,ch)
作爲第一個功能的第二個功能?
而且如果第一個功能是
\n -> ['a','b'] >>= \ch -> return (n,ch)
爲什麼是從右到左的評價。
是不是應該是\n -> (function)
?
這是什麼功能(['a','b'] >>= \ch -> return (n,ch))
?
如果從左到右它不能使用第一部分['a','b']
而不是第二個\ch
函數,它不需要對參數'n'
做任何事情。
列表沒有設置,我懷疑這是造成混亂的原因。 Powerset本身是完全確定性的,列表操作也是確定性的,但由於列表和集合之間沒有1:1的對應關係,列表中的「powerset」實現並沒有很好地規定。 – leftaroundabout 2015-01-21 12:02:51
誰說這是非確定性的?我問,因爲他們錯了,或者你誤解了他們的意圖。我們通常說單子monad允許我們爲非確定性建模 - 這並不意味着我們的計算結果始終是非確定性的 - 完全相反。列表允許我們確定性地對非確定性建模。通過用可能值列表表示單個值並將其視爲單個值的類型,我們可以假設我們正在處理單個值,而事實上我們正在處理所有可能的值組合。 – kqr 2015-01-21 12:19:41