簡體   English   中英

Haskell Monads實施

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM