Improving a Haskell FizzBuzz Solution
You write:

map snd . filter ((==0) .fst) $ map (first (mod x)) table


To make it clearer that we have three operations applied one after another, I would rather write:

map snd . filter ((==0) .fst) . map (first (mod x)) $ table


But I think this gets easier to read if we merge the filter and the second map:

map snd . filter ((== 0) . mod x . fst) $ table


Some people prefer pointful style, that is, they prefer \ over .:

map snd . filter (\(number, text) -&gt; x `mod` number == 0) $ table


Personally, I would prefer a list comprehension here:

[text | (number, text) &lt;- table, x `mod` number == 0]