回答
.
是函數組合,你這麼說是什麼,採取功能foldr (+) 0 :: [Int] -> Int
與map (^2) a :: [Int]
組成,但是,這個是沒有意義的,你的第二個「功能」,在此成分是不是真的一個函數。
你最好別要的是來交換他們和使用的應用程序,而不是組成
foldr (+) 0 (map (^2) a)
foldr (+) 0 $ map (^2) a
,這可以被轉換回什麼叫做「埃塔轉換」
sumSquares = foldr (+) 0 . map (^2)
sumSquares = sum . map (^2)
由於成分另外,foldr
可能是這裏的錯誤摺疊,foldl'
會更節省空間。
'sum'在其累加器中也是非結構體。 –
@TomEllis是的,這就是爲什麼你可以用它吹堆棧,'foldl''在恆定空間中運行 – jozefg
你要真正做到這一點:
sumSquares a = foldr (+) 0 $ map (^2) a
演示了ghci:
ghci> sumSquares [2,2]
8
要使用(.)
運營商解決這個問題,你可以使用該解決方案由@Sassa提到:
sumSquares = foldr (+) 0 . map (^2)
但我覺得很難看,或者你可以看到jozefg解決方案,其中h Ë使用sum
和(.)
這有效!非常感謝 – user3105607
我被告知要使用。運算符,爲什麼這不起作用,或者如何改變我的代碼以使用點?謝謝 – user3105607
@ user3105607請參閱jozefg答案。 :) – Sibi
- 1. 哈斯克爾:地圖runST
- 2. 哈斯克爾仿錯誤
- 3. 哈斯克爾,錯誤
- 4. 哈斯克爾錯誤
- 5. 哈斯克爾解析錯誤圖案
- 6. 數據類型哈斯克爾錯誤
- 7. 分數詮釋錯誤[哈斯克爾]
- 8. 哈斯克爾函數簽名錯誤
- 9. 哈斯克爾地圖的樹木
- 10. 列表中的哈斯克爾錯誤
- 11. 哈斯克爾 - 錯誤的執行
- 12. 哈斯克爾代數參數
- 13. 發生曖昧「地圖」錯誤WinHugs /哈斯克爾
- 14. 哈斯克爾地圖和過濾器
- 15. 哈斯克爾列表理解地圖
- 16. 哈斯克爾
- 17. 哈斯克爾
- 18. 哈斯克爾TCP服務器,fd是太大錯誤
- 19. 錯誤導入哈斯克爾模塊
- 20. 哈斯克爾減法錯誤
- 21. 哈斯克爾陰謀無包錯誤
- 22. 哈斯克爾:錯誤而GHCI
- 23. 哈斯克爾ghci.exe錯誤(0xc0000142)
- 24. 模板哈斯克爾編譯錯誤
- 25. 哈斯克爾類型錯誤
- 26. 哈斯克爾類錯誤與在
- 27. 哈斯克爾陰謀安裝錯誤
- 28. 哈斯克爾 - 編譯錯誤
- 29. 錯誤類型匹配哈斯克爾
- 30. 哈斯克爾秒差距錯誤
它看起來像您以錯誤的順序使用(。)。 sumSquares = foldr(+)0。地圖(^ 2) –