Text.Parsec.Perm とコマンドライン解析

通常、コマンドラインの解析には、getOpt を使うのだろう。

しかし、getOpt は、1文字オプションではなく

HOGE -DEBUG -DL FILE

といった文字列オプションに対しては使えない。

文字列オプションを解析するのに Text.Parsec.Perm は使えないだろうか。
Parsec の利用は、次のようなことが問題になる。
パーサの型を Parsec String u a とした場合、getArgs の戻り値はそのままでは渡せない。
しかし、getArgs の戻り値を unwords でひとつの文字列としてしまうと、
空白の混在したオプション引数を解析できなくなる。

module Main where
import System.Environment

main :: IO()
main = do
      args <- getArgs
      putStrLn (unwords args)

C:\>hoge "ABC DEF" GHI
ABC DEF GHI

Parsec を使ってコマンドライン解析をやるなら、Parsec [String] u a なるパーサーが必要か。

module Main where
import System.Environment

main :: IO()
main = getArgs >>= print

C:\>hoge "ABC DEF" GHI
["ABC DEF","GHI"]