2016-04-03 23 views
1

etiketli olmayan komut satırı argümanları için belgeler example adlı bir programın komut satırı argümanlarını ayrıştırmak için optparse-generic kullanıyorum. Adsız alana sahip bir veri türü var. Örneğin: ./exmaple "foo":Haskell, optparse-generic

data Unlabeled = Unlabeled String deriving (Generic, Show) 

Bu şöyle çağrılabilir bir programı oluşturur. Ancak, kullanıcı için String -parametrenin ne hakkında olduğunu gösteren belge bulunmamaktadır. Özellikle, ./example --help bu konumsal String argüman ./example argüman hakkında değerli bilgiler vermez.

Ad verilen veri tiplerini (sözdizimi) kullanarak, veri türüne belge eklemek mümkündür. Örneğin, program için yardım metni oluşturur. Örneğin, ./example --help olarak adlandırıldığında, --name STRING Select the foo gösterecektir.

Adlandırılmamış veri türlerine, sözdizimi-veri türleri için yapabileceğim şekilde nasıl eklenir?

+1

'data Labeled = Etiketli (String " Foo yi seçin ")' size verecek '... STRING foo ...' --help' mesajında ​​seçin. – user2407038

+0

Ahh, parantez. Ne kadar aptalım. @ user2407038, lütfen bunu normal cevap olarak gönderir misiniz? Böylece soruyu çözülmüş olarak işaretleyebilirim. – corny

cevap

1

veri Labeled = Labeled (String <?> "Select the foo") size --help mesajda

... 
STRING  Select the foo 
... 

verecektir. Belki de açıklığa kavuşturmak için, <?> sadece bir tür yapıcıdır, sadece sözdizimsel olarak bir operatördür. Belki de eğlenceli gerçek: data X = X (Int `Either` Bool) da yazabilirsiniz.