
Simon Peyton-Jones:
Would someone familiar with the command-line-parsing libraries care to help Krassimir?
I agree with Max that it looks like the problem is not doing any fancy command-line parsing (if that is indeed the issue, then please post more information about what the problem is). Rather, how to run a function whose name and arguments are given as strings from the command line. Max gave one answer. Another approach, if appropriate, would be to use GHCi. You could do that using the GHC API: http://haskell.org/haskellwiki/GHC/As_a_library (search for "runStmt") Or you could do it using GHCi from the command line and the shell. This is a bit of a hack, but you can get it working in minutes, without installing anything extra. Here's how: The trick is to pass information into GHCi via environment variables, using the .ghci file and the :def command. Place something like the following in the file ".ghci" in the same directory with your program: :def getEnv (\[v,e]->System.Environment.getEnvironment>>=return.maybe""((concat["let ",v,"="]++).show).lookup e).words :getEnv func FUNC :getEnv args ARGS :def run const(return$unwords[func,args]) :run :quit (Watch out for word-wrap in this email message - there needs to be a space after the word "let ", and every line begins with ":") Write a simple shell script that arranges for the name of the function and arguments to be in the environment variables FUNC and ARGS, and then calls ghci. Something like this (assuming you are on something Unix-like): #!/bin/bash export FUNC="$1" shift export ARGS="$*" ghci YourProgram.hs This obviously would have to be tweaked to your specific needs. For example, you'll get the GHCi welcome message at the beginning of your output. So your shell script will have to filter that out if it is not acceptable. Hope this helps, Yitz