[Haskell-beginners] A problem with a simple csv file parser
Jimmy Wylie
jwylie at uno.edu
Sat Oct 16 02:48:15 EDT 2010
Hi Andy,
If I remember right, runhaskell is expecting a full fledged haskell
program with a "main" defined. Instead, you've sent it a module, which
it isn't expecting, so you're getting a parse error on the "where". If
you remove the "Module parseCSV where" from the top of your file, and
try again, you'll get a "not in scope 'main' " error.
So you can test this a couple of ways. An easy way would be to open a
terminal window and type "ghci", to open up ghc's Interpreter. Then, at
the prompt type:
:l parseCSV.hs (or whatever the name of your file is)
Now, ghci, has loaded up all the functions defined in your file. So now,
you can invoke your functions:
*Main> parseCSV "a,b,c,d\n"
Right [["a","b","c","d"]]
If you're really adamant about using runhaskell, what you need to do is
define a main function that opens up a file, use hGetContents to read
the file as a String, and then invoke parseCSV on that String.
In order to take command line arguments, you'll want this:
http://haskell.org/ghc/docs/6.12.1/html/libraries/base-4.2.0.0/System-Environment.html#v:getArgs
Good Luck,
Jimmy
On 10/16/10 12:23 AM, Andy Elvey wrote:
> Hi all -
>
> I'm just trying to get the simple csv file parser from "Real World
> Haskell" working.
> However, I've got a problem. Here's the code -
>
> -- A simple csv parser
> Module parseCSV where
> import Text.ParserCombinators.Parsec
>
> csvFile = endBy line eol
> line = sepBy cell (char ',')
> cell = many (noneOf ",\n")
> eol = char '\n'
>
> parseCSV :: String -> Either ParseError [[String]]
> parseCSV input = parse csvFile "(unknown)" input
>
> ( Btw, I'm running Ubuntu 10.04, GHC 6.12.1 )
>
> When I try to run this (using "runhaskell parseCSV.hs test.csv" ) I get
> the error -
> parseCSV.hs:4:16: parse error on input `where'
>
> This has me really puzzled - as far as I can see, the first line looks
> identical to a number of similar
> programs that I've found (while searching for a solution to this). So,
> if anyone can let me know
> what is causing this, that'd be great! Many thanks in advance -
> - Andy
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
More information about the Beginners
mailing list