我試圖理解表達式(map . map)
的類型。由於(.)
的類型是(b -> c) -> (a -> b) -> a -> c
我不明白這是如何與地圖功能一起使用的,因爲地圖有兩個參數不適合(b -> c)
和(a -> b)
。類型(地圖。地圖)
0
A
回答
5
報價GHCI:
Prelude> :t map.map
map.map :: (a -> b) -> [[a]] -> [[b]]
但對於地圖本身,類型是
map :: (a -> b) -> [a] -> [b]
,你可以作爲
map :: (a -> b) -> ([a] -> [b])
所以你們看到,如果我們有 (.) :: (t2 -> t3) -> (t1 -> t2) -> t1 -> t3
然後:
- 型
t1
爲(a -> b)
- 型
t2
是([a] -> [b])
- 型
t3
是我喜歡把它([[a]] -> [[b]])
1
一種方式是map
變成一個a -> b
成[a] -> [b]
,所以map . map
做了兩次。第一張地圖將您的a -> b
變成[a] -> [b]
,第二張地圖將重複該過程,將其變爲[[a]] -> [[b]]
。
「應用map
到a -> b
把它變成一個[a] -> [b]
」,因此,它似乎很漂亮合乎邏輯的應用map
到[a] -> [b]
會變成一個[[a]] -> [[b]]
。您只需將map
應用於一個函數兩次。
順便提及:
-- apply map to a function once
map :: (a -> b) -> ( [a] -> [b] )
-- apply map to a function twice
map . map :: (a -> b) -> ([[a]] -> [[b]])
-- apply map to a function three times
map . map . map :: (a -> b) -> ([[[a]]] -> [[[b]]])
相關問題
- 1. 更改Google地圖的地圖類型
- 2. MKMapView地圖類型
- 3. 谷歌地圖:地圖類型(路線圖,地形)
- 4. 谷歌地圖:根據地圖類型鏈接到地圖
- 5. 地圖類型在地圖API上顯示錯誤的地點類型
- 6. 動態地更改Google地圖v3中的地圖類型
- 7. 谷歌地圖v3 - 土地類型
- 8. 谷歌地圖谷歌地點類型
- 9. 數組類型地圖
- 10. 地圖的密鑰類型
- 11. 地圖不同類型
- 12. decltype地圖值類型?
- 13. Google地圖標記類型
- 14. 地圖類型更改後,地圖圖像會改變嗎?
- 15. 使用默認地圖類型的Google地圖傾斜視圖
- 16. Bing靜態地圖圖像類型
- 17. Bing地圖V8控制錯誤從地圖到街道更改地圖類型
- 18. iPhone上routeme上的地圖類型的地圖?
- 19. 製作Android地圖菜單以更改地圖類型
- 20. 無法在Google地圖中顯示3種地圖類型
- 21. 谷歌地圖API風格的地圖類型414錯誤
- 22. 地圖類型行政區域在谷歌地圖android
- 23. 使用API獲取谷歌地圖的地圖類型
- 24. 谷歌地圖 - 插入地圖類型選擇到div
- 25. 地圖Scala:帶值類型的地圖選項
- 26. 可以包含在android地圖應用中的地圖類型
- 27. util:Spring在地圖類型中拾取每個bean的地圖
- 28. 谷歌地圖api中的地圖類型概念
- 29. 指定具體地圖到通用類型地圖
- 30. 如何讓C++中的地圖類型的指針,地圖
注意,'甲 - >乙 - > C'是短期的'一個 - >(B - > C)'。在Haskell中,所有函數都只有*一個*參數。 –
我在想那個。但我不能決定它應該分成'a - >(b - > c)'還是'(a - > b) - > c'。但是你現在說的話對我來說很有意義。如果我這樣想:如果我們想把map看作一個「單參數函數」,它的類型是「(a - > b) - >([a] - > [b])」 ,因爲如果我們爲它提供第一個參數('(a - > b)'函數),我們得到的是類型'([a] - > [b])'的函數'。因此,類型'(a - > b)'和'([a] - > [b])'對應於'(a - > b)'中的'a'和'b', 。map)'? – Nicrophorus
'a - > b - > c'與'a - >(b - > c)'相同,但不同於'(a - > b) - > c' – user3927886