2010-03-19 3 views
-1

Ok, donc je fais un programme dans Haskell qui doit changer certains mots en fonction de deux arguments de ligne de commande. J'ai fait la fonction de remplacement et tout fonctionne très bien, mais je suis perplexe de le faire fonctionner avec des arguments de ligne de commande.Haskell: lire plusieurs arguments de ligne de commande

Voici le code principal: (remplacer la fonction non inclus)

main = do 

text <- getContents 

(command1:command2:_) <- getArgs 
putStrLn (replace (read command1) (read command2) text) 

Donc, pour intstance dans le terminal Je veux être capable de taper quelque chose comme: « ---> cat textfile.txt | ./replace oldword newword "

Je sais que ce code est proche car j'en ai vu d'autres faire comme ça. O_o

Merci pour toute aide

+3

Quel est exactement le problème? Avez-vous un message d'erreur? –

+1

Il se peut que vous ayez oublié d'importer System (getArgs) – luqui

+4

Ou il se peut que vous n'ayez pas indenté les lignes dans le bloc do. L'indentation est obligatoire. – luqui

Répondre

10

Vous devriez vraiment inclure dans votre question quel genre d'erreur que vous obtenez ou ce qui ne fonctionne pas comme prévu. Juste dire "Je suis perplexe" ne donne pas beaucoup d'indications sur ce qui ne va pas.

Donc, une supposition sauvage: Probablement votre fonction replace prend des chaînes comme paramètres. Comme getArgs renvoie déjà les arguments en tant que chaînes, il n'est pas nécessaire d'appeler read, ce qui convertirait ces chaînes en un autre type de données. Utilisez simplement les arguments directement:

main = do 
    text <- getContents 

    (command1:command2:_) <- getArgs 
    putStrLn (replace command1 command2 text) 
+0

Désolé pour la question ambiguë. = P C'est la première fois que je poste pour de l'aide sur le code source, Haskell est tellement étranger à moi. Cela semble avoir fonctionné. Je savais que l'esprit aurait quelque chose de mineur comme ça. Merci beaucoup pour l'aide, je peux terminer ce programme maintenant. = D – Survot

Questions connexes