RosettaCodeData/Task/Happy-numbers/Haskell/happy-numbers-1.hs
2019-09-12 10:33:56 -07:00

14 lines
347 B
Haskell

import Data.Char (digitToInt)
import Data.Set (member, insert, empty)
isHappy :: Integer -> Bool
isHappy = p empty
where
p _ 1 = True
p s n
| n `member` s = False
| otherwise = p (insert n s) (f n)
f = sum . fmap ((^ 2) . toInteger . digitToInt) . show
main :: IO ()
main = mapM_ print $ take 8 $ filter isHappy [1 ..]