I wrote a solution to the popularized FizzBuzz problem in Haskell to see how a functional solution looks. I'm more or less happy with my solution, except for the definition of
list. It just looks sort of contorted.
Are there any language features in Haskell which can improve the readability of this code, especially the definition of
list, while preserving the extensibility that
import Control.Arrow main = mapM_ (putStrLn . fizzBuzzLogic) [1..100] fizzBuzzLogic :: Int -> String fizzBuzzLogic x | null list = show x | otherwise = foldl1 (++) list where list = map snd . filter ((==0) .fst) $ map (first (mod x)) table table = [(3,"Fizz") ,(5,"Buzz") ] --add more modulo tokens if you wish