
I did a small search for parsing a comma seperated file in Haskell and didn't find anything-- so I put together some code to do this. It doesn't handle whitespace very well, this would be a nice addition if someone has an idea out there. Also the rows method, I had trouble just using two do loops without brackets, I couldn't prevent it from being ambiguous. Anyway here's the code: ------------------------- import Parsec import System.IO -- Code to parse a comma seperated file content :: Parser String content = many1 (noneOf "\"") cell :: Parser String cell = do char '\"' w <- content; char '\"' > "end of cell" return w; <|> return "" -- Empty cell separator :: Parser () separator = skipMany1 (char ',') cells :: Parser [String] cells = sepBy1 cell separator contents :: Parser [String] contents = sepBy1 content separator; rows :: Parser [[String]] rows = do c <- cells newline do { cs <- rows; return (c:cs); } <|> return [c] csv :: Parser [[String]] csv = do r <- rows eof return r -- Main routine main :: IO () main = do result <- parseFromFile csv "simple.txt" case (result) of Left err -> print err Right sb -> print sb ------------------- Shawn Garbett