> import Data.Digits
> isKeith :: Int -> Bool
> isKeith n = let ds = digitsRev 10 n in isKeith' n (length ds) ds
> isKeith' :: Int -> Int -> [Int] -> Bool
> isKeith' n len ds
> | n == s = True
> | s > n = False
> | otherwise = isKeith' n len (take len (s : ds))
> where s = sum ds
> main :: IO ()
> main = print (isKeith 197)