Мне нужно написать функцию, которая принимает все положительные числа из списка Integer, добавляет к каждому 10, а затем суммирует их все, пока не достигнет maxNum.Haskell Как получить сумму всех положительных членов, используя функцию композиции?
Я уже писал что-то, что вроде работает:
ff :: Integer -> [Integer] -> Integer
ff maxNum = (<=maxNum) . sum . map(+10) . filter(>0)
, но проблема в том, что эта функция возвращает истину, если сумма не превышает MAXNUM и ложно, если сумма больше ... Как я понимаю, Я очень близка к тому, что хочу. Может кто-нибудь мне помочь ???
Это не работает, как это должно быть ... может быть, вы не поняли мой вопрос ... когда я вызываю свою функцию с этими параметрами «ff 26 [2, -3, 4]« Я должен получить результат значения 26, потому что (2 + 10) + (4 + 10) <= 26 .. Ваш подход просто дает мне последнее число, увеличенное на 10 –
@ NikasŽalias это не так. '(\ maxNum -> last. takeWhile (<= maxNum). scanl (+) 0. map (+10). filter (> 0)) 26 [2, -3,4]' is 26. Действительно ли вы использовали 'scanl' (__and__' takeWhile'?) – Zeta
извините, моя ошибка, как-то haskell ошибочно скомпилирована, не все в порядке .. спасибо !!!!!! –