main :: [sys_message] main = [Stdout (lay (map (show . take 30) [powers_of_3, evil, odious]))] powers_of_3 :: [num] powers_of_3 = map (popcount . (3^)) [0..] evil :: [num] evil = filter f [0..] where f n = popcount n mod 2 = 0 odious :: [num] odious = filter f [0..] where f n = popcount n mod 2 = 1 popcount :: num -> num popcount 0 = 0 popcount n = n mod 2 + popcount (n div 2)