Haskellのリストの場合だったら、concat(またはconcatMapなど)するのが自然のように思います。遅延評価万歳です。
module Main (main) where
main :: IO ()
main = do
let a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
mapM_ print $ concat [a, b, c]
Rubyのflattenは深い入れ子の配列まで平滑化してしまうので、よく罠にはまります。一段だけのflattenが欲しいです。