[英]Haskell Monads implementation
我最近在看書,了解到你有一個haskell,我遇到了這個表達:
[1,2] >>= \n -> ['a', 'b'] >>= \ch -> return (n, ch)
此表達式返回結果
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
所以我知道列表的monadic綁定實現如下
xs >>= f = concatMap f xs
以表達式的前半部分為:
[1,2] >>= \n -> ['a', 'b']
根據我的理解,它的計算結果為['a','b','a','b']
,然后將其輸入到函數中: (\\ch -> return (n , ch))
。
我不明白的是如何將列表中的值1,2分配給n,然后編譯器如何保留它的記錄,然后在最后一個函數中將其分配給n?
上半年不是您想的那樣,括號是這樣的:
[1,2] >>= ( \n -> ['a', 'b'] >>= ( \ch -> return (n, ch) ) )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.