[英]Haskell how to get sum of all positive members using function composition?
我必須編寫一個函數,該函數從Integer列表中獲取所有正數,將其添加到每個10中,然后將它們加總,直到達到maxNum。
我已經寫了一些可行的東西:
ff :: Integer -> [Integer] -> Integer
ff maxNum = (<=maxNum) . sum . map(+10) . filter(>0)
但是問題是,如果總和不大於maxNum,則此函數返回true;如果總和不大於false,則返回false。據我所知,我已經很接近我想要的了。有人可以幫我嗎?
您需要一筆總和,例如
rollingSum [1..10] = [0,1,3,6,10,15,21,28,36,45,55]
畢竟, sum
只會給您最終的總和,您需要在其中檢查中間的總和。
幸運的是, scanl (+) 0
提供了此功能。 因此,您可以取該滾動總和的數字,只要它們小於maxNum
,然后小於last
元素:
ff maxNum = last . takeWhile (<= maxNum) . scanl (+) 0 . map (+10) . filter (> 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.