2017-10-03 6 views
1

J'ai le code Haskell suivant utilisant optparse-applicative qui se bloque à l'exécution.Comment utiliser des options avec plusieurs valeurs avec optparse-applicative de Haskell

main :: IO() 
main = do 
    printf "Start...\n" 
    args <- execParser $ info args fullDesc 
    printf "Cmdline args: %s\n" (show args) 

args :: Parser [Integer] 
args = many (option auto 
     (short 'x' 
      <> value 1)) 

Le problème est lié à l'utilisation de beaucoup Combinator car une fois que je le supprimer le code fonctionne très bien.

Est-ce un bug ou est-ce que je fais quelque chose de mal?

Merci!

Répondre

5

Je pense que le problème est ici avec la valeur par défaut. Supprimez simplement value 1 des modificateurs d'analyseur.

De docs value:

Note: Parce que ce modificateur signifie que l'analyseur ne périra jamais, ne l'utilisez pas avec combinateurs tels que certains ou plusieurs, étant donné que ces combinateurs continuent jusqu'à ce qu'une défaillance se produit. Une utilisation imprudente entraînera donc un blocage.