這是什麼功能產生
回答
你的代碼是一樣的
[1, 2, 3] >> "lambda"
>>
被定義爲
m >> n = m >>= \_ -> n
而且>>=
運營商名單定義爲:
xs >>= f = concat (map f xs)
所以,你的代碼可能翻譯成:
concat $ map (const "lambda") [1, 2, 3]
其產生結果
"lambdalambdalambda"
這裏是相同的輸出使用綁定:
λ> [1,2,3] >>= \x -> "lambda"
"lambdalambdalambda"
那你希望得到?
我沒有想到它會起作用,因爲我們沒有回報。 什麼是λ> [1,2,3] >> = \ x - >「lambda」 我們將一個列表綁定到一個產生「lambda」結果的函數。 它怎麼應用了三次。 – user2975699
什麼是λ>? 爲什麼功能應用了三次? – user2975699
這沒什麼重要的。我在YouTube教程中看到它並喜歡它。在ghci裏面,你可以通過運行':set prompt
通過列表單子的定義,
do [1,2,3]; "lambda" -- "lambda" = ['l','a','m','b','d','a']
= [1,2,3] >>= (\x -> "lambda")
= [r | x <- [1,2,3], r <- "lambda"]
爲列表單子return x = [x]
,和
do x <- [1,2,3]; return x
= [r | x <- [1,2,3], r <- [x]]
因此通常的用例獲得快捷方式只需[x | x <- [1,2,3]]
。這使用單子法m >>= return = m
。
但是,do
序列中的最後一個值的類型爲m a
(這裏是[a]
)不必是單例列表。它可以是空的,或者擁有多個元素。
至於結果的類型,它是[Char]
。首先,do
代表綁定鏈,綁定的類型是
(>>=) :: m a -> (a -> m b) -> m b
因爲在你的榜樣的單子值的列表,我們認爲m = []
。最後一個值是String
,它是[Char]
,所以根據上面的簽名,這是結果的類型。
- 1. 什麼是這個功能
- 2. 這是爲什麼產生一個java.lang.StackOverflowError,這是什麼意思?
- 3. 這是爲什麼產生一個StackOverflowError
- 4. 這裏產生的網址是什麼
- 5. 這是爲什麼會產生警告?
- 6. 什麼是產生
- 7. 這是怎麼產生的?
- 8. 「功能」是功能,這怎麼可能?
- 9. 這是什麼緩衝區功能?
- 10. 這段代碼的功能是什麼?
- 11. 這是什麼無名的功能?
- 12. Javascript - 這行是什麼意思? !功能($)
- 13. 不知道這個功能是什麼
- 14. 這個MACRO功能是做什麼的?
- 15. 這是什麼樣的jQuery功能?
- 16. 這段代碼的功能是什麼?
- 17. Google Maps API:這是什麼功能?
- 18. 這是什麼bash腳本功能
- 19. 這個功能的目的是什麼?
- 20. 什麼是錯的這個MySQL功能
- 21. 這個功能爲什麼這麼慢?
- 22. 什麼是生產網站?
- 23. 什麼是產生在Haskell
- 24. 爲什麼vfork產生這個輸出?
- 25. 這爲什麼會產生NetworkOnMainThreadException?
- 26. 這條SQL語句產生了什麼?
- 27. 爲什麼VS C++ 2010編譯器產生類似的功能
- 28. 什麼開羅功能產生可點擊的網址
- 29. Double dispatch產生「隱藏虛擬功能」警告,爲什麼?
- 30. 這是什麼,爲什麼發生?
這是功課嗎? – augustss
不,這是一箇舊的考試問題。 所以我認爲可以在這裏尋求幫助。 – user2975699