[Haskell-cafe] Terminal-like Application Design
a.d.clark at ed.ac.uk
Fri Oct 17 04:35:01 EDT 2008
It sounds like maybe you just want an application that works a bit like 'cabal'.
So with cabal the first argument is taken as the 'command' and then the rest are based on that:
cabal build --some other --options --which may --or --may --not have --arguments
Yi has a simple template for a script which should get you started, please find it attached.
So here instead of processOptions, you might want, processCommand
processCommand :: [ String ] -> IO ()
processCommand ("build" : args) = processBuildCommand args
processCommand ("play" : args) = processPlayCommand args
processCommand  = putStrLn "You must supply a command"
processCommand _ = putStrLn "Sorry I don't understand your command" --Probably out put help here as well
processBuildCommand :: [ String ] -> IO ()
processBuildCommand = similar to the processOptions except now you are sure you are in a 'build' command
you *might* even have a separate set of option descreptions for each command.
Jeff Wheeler wrote:
> I'm a slight Haskell newbie, but I'm trying to write a terminal-like
> application that accepts simple commands with optional arguments, and
> can then execute them. Most of these commands will need IO, as later I
> will want to communicate over USB for most of them.
> I was hoping, though, that I could get some comments on the initial
> architecture I've been playing with .
> I suspect I should be using some sort of monad to represent the
> commands, but I don't fully understand monads, and am not sure how it
> would apply in this context.
> Should I be using a monad here, and if so, how?
> Thanks in advance,
> Jeff Wheeler
>  http://media.nokrev.com/junk/cli/
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 1800 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20081017/79a3c28e/Script.bin
More information about the Haskell-Cafe