diff --git a/haskell/columnv4.hs b/haskell/columnv4.hs
new file mode 100644
index 0000000..1460948
--- /dev/null
+++ b/haskell/columnv4.hs
@@ -0,0 +1,9 @@
+import Data.List as L
+
+main = do
+    content <- getContents
+    putStr $ unlines $ map unwords $ L.transpose $ map formatLine $ L.transpose $ completeMatrix $ map words $ lines content
+    where completeMatrix m = map (\e -> e ++ [""| _ <- [length e..nb]]) m
+                             where nb = maximum $ map length m
+          formatLine x = map (\e -> e ++ [' ' | _ <- [length e..nb]]) x
+                         where nb = maximum $ map length x