import Data.Char (digitToInt, isDigit) sumDigitsRecur :: String -> Int sumDigitsRecur [] = 0 sumDigitsRecur (x : xs) = if isDigit x then digitToInt x + sumDigitsRecur xs else sumDigitsRecur xs sumDigitsListComp :: String -> Int sumDigitsListComp i = sum [if isDigit x then digitToInt x else 0 | x <- i] sumDigitsMapFilterFold :: String -> Int sumDigitsMapFilterFold i = foldr (+) 0 (map digitToInt (filter isDigit i))