optionString :: [Option] -> String
optionString = concat . mapMaybe optionStringChunk
  where optionStringChunk option = do
          short <- optionShortName option
          return $ short :
            case optionArgument option of
              NoArgument       -> ""
              RequiredArgument -> ":"
              OptionalArgument -> "::"
optionString :: [Option] -> String
optionString = concat . mapMaybe optionStringChunk
  where optionStringChunk option = do
          short <- optionShortName option
          return $ short :
            case optionArgument option of
              NoArgument       -> ""
              RequiredArgument -> ":"
              OptionalArgument -> "::"
optionString = concat . mapMaybe optionStringChunk
  where optionStringChunk option = do
          short <- optionShortName option
          return $ short :
            case optionArgument option of
              NoArgument       -> ""
              RequiredArgument -> ":"
              OptionalArgument -> "::"