2016-04-03 3 views
1

Ich verwende optparse-generic, um die Befehlszeilenargumente eines Programms namens example zu analysieren. Ich habe einen Datentyp mit einem unbenannten Feld. Zum Beispiel:Haskell, Dokumentation für nicht markierte Befehlszeilenargumente in optparse-generic

data Unlabeled = Unlabeled String deriving (Generic, Show) 

Dies erzeugt ein Programm, das wie folgt aufgerufen werden kann: ./exmaple "foo". Für den Benutzer gibt es jedoch keine Dokumentation darüber, was der String -Parameter ist. Insbesondere ./example --help gibt keine wertvollen Informationen über diese Position String Argument ./example erwartet.

Mit benannten Datentypen (Datensatzsyntax) ist es möglich, dem Datentyp Dokumentation hinzuzufügen. Zum Beispiel

data Labeled = Labeled {name :: String <?> "Select the foo"} deriving (Generic, Show) 

Dies generiert Hilfetext für das Programm. Wenn zum Beispiel ./example --help aufgerufen wird, wird --name STRING Select the foo angezeigt.

Wie kann ich Dokumentation zu unbenannten Datentypen auf die gleiche Weise wie für Datensatz-Syntax-Datentypen hinzufügen?

+1

'Daten beschriftet = beschriftet (Zeichenfolge " Wählen Sie die foo ")' wird Ihnen geben ... STRING Wählen Sie die foo ... 'in der' --help' Nachricht. – user2407038

+0

Ahh, Klammer. Wie dumm von mir. @ user2407038, kannst du das bitte als normale Antwort posten, damit ich die Frage als gelöst markieren kann. – corny

Antwort

1

Daten Labeled = Labeled (String <?> "Select the foo") geben Ihnen

... 
STRING  Select the foo 
... 

in der --help Nachricht. Um vielleicht zu klären, der <?> ist einfach ein Typkonstruktor, es ist nur syntaktisch ein Operator. Vielleicht lustige Tatsache: Sie können data X = X (Int `Either` Bool) auch schreiben.

Verwandte Themen