{- |Collect the valid arguments. Raises an IO error if it fails.  -} 
compilerOpts :: [String] -> ([Flag], [String])
compilerOpts argv = 
       case getOpt Permute options argv of
        (o,fs,[] ) -> (o,fs)
        (_,_,errs)  -> error (usageInfo [] options)
      -- where header = "Usage: fm [OPTION...] dictionary_file(s)..."
compilerOpts :: [String] -> ([Flag], [String])
compilerOpts argv = 
       case getOpt Permute options argv of
        (o,fs,[] ) -> (o,fs)
        (_,_,errs)  -> error (usageInfo [] options)
      -- where header = "Usage: fm [OPTION...] dictionary_file(s)..."
compilerOpts argv = 
       case getOpt Permute options argv of
        (o,fs,[] ) -> (o,fs)
        (_,_,errs)  -> error (usageInfo [] options)
      -- where header = "Usage: fm [OPTION...] dictionary_file(s)..."