options :: [OptDescr ProgFlag]
 -- Option [Char] [String] (ArgDescr a) String
options = map f
          [ ( "lib", "Path to the hets file", ReqArg PFLib "FILE")
          , ( "spec"
            , "Name of specification importing both, the pattern and the design specification"
            , ReqArg PFSpec "SPECNAME")
          , ( "pattern", "Name of the pattern specification"
            , ReqArg PFPattern "SPECNAME")
          , ( "design", "Name of the design specification"
            , ReqArg PFDesign "SPECNAME")
          , ( "translate"
            , "If this flag is set the match is further translated to an EnCL specification"
            , NoArg PFTrans)
          , ( "verbosity"
            , "A value from 0=quiet to 4=print out all information during processing"
            , OptArg (PFVerbosity . read . fromMaybe "4") "0-4")
          , ( "quiet", "Equal to -v0", NoArg PFQuiet)
          ] where
    f (fs, descr, arg) = Option [head fs] [fs] arg descr
options :: [OptDescr ProgFlag]
options = map f
          [ ( "lib", "Path to the hets file", ReqArg PFLib "FILE")
          , ( "spec"
            , "Name of specification importing both, the pattern and the design specification"
            , ReqArg PFSpec "SPECNAME")
          , ( "pattern", "Name of the pattern specification"
            , ReqArg PFPattern "SPECNAME")
          , ( "design", "Name of the design specification"
            , ReqArg PFDesign "SPECNAME")
          , ( "translate"
            , "If this flag is set the match is further translated to an EnCL specification"
            , NoArg PFTrans)
          , ( "verbosity"
            , "A value from 0=quiet to 4=print out all information during processing"
            , OptArg (PFVerbosity . read . fromMaybe "4") "0-4")
          , ( "quiet", "Equal to -v0", NoArg PFQuiet)
          ] where
    f (fs, descr, arg) = Option [head fs] [fs] arg descr
options = map f
          [ ( "lib", "Path to the hets file", ReqArg PFLib "FILE")
          , ( "spec"
            , "Name of specification importing both, the pattern and the design specification"
            , ReqArg PFSpec "SPECNAME")
          , ( "pattern", "Name of the pattern specification"
            , ReqArg PFPattern "SPECNAME")
          , ( "design", "Name of the design specification"
            , ReqArg PFDesign "SPECNAME")
          , ( "translate"
            , "If this flag is set the match is further translated to an EnCL specification"
            , NoArg PFTrans)
          , ( "verbosity"
            , "A value from 0=quiet to 4=print out all information during processing"
            , OptArg (PFVerbosity . read . fromMaybe "4") "0-4")
          , ( "quiet", "Equal to -v0", NoArg PFQuiet)
          ] where
    f (fs, descr, arg) = Option [head fs] [fs] arg descr