Bonjour
Ayant crééer un petit programme Haskell (compilé) j'aimerais pourvoir en exécuter certaines opérations en ligne de commande.
Par exemple
crée un fichier présentant la courbe d'une fonction f : dom --> rang
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 splot :: [Float -> Float] -> Coord -> Coord -> IO () splot [f] dom rang = ....
Remarque: splot [f1, f2 ...] dom rang trace les courbes de l'ensemble des fonctions.
Afin d'importer les paramètres en ligne de commande, j'utilise ( avec System.Environment )
Par exemple , si j'introduis dans terminal
Code : Sélectionner tout - Visualiser dans une fenêtre à part args <- getArgs
On a args!!0 = "[splot]"
Code : Sélectionner tout - Visualiser dans une fenêtre à part ../bidule splot "[\x->x*sin(x)]" "(0,3)" "(0,2)"
args!!1 = "[\x->x*sin(x)]"
args!!2 = "(0,3)"
args!!3 = "(0,2)"
Mon idée est de rassembler tout cela dans une chaine unique et de l'interpréter.
Dans notre exemple, la chaine est obtenue par consatSpace args
qui donne, comme on peut s'y attendre: "splot [\x->x*sin(x)] (0,3) (0,2)"
Pour l'interpréter, j'essaye d'utiliser hint qui doit être ajouté au fichier cabal ( build-depends: base, hint )
La compilation s'effectue sans message d'erreur, et la commande dans terminal ne produit également aucun message ,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 main=do args <- getArgs runInterpreter $ do { setImports ["Prelude"]; eval $ consatSpaced args }
mais le fichier graphique attendu n'est pas créé.
Il y a peut-être un problème avec l'interprétation du caractère "\" utilisé pour lambda. J'ai aussi essayé "\\" mais sans succès...
Ou est l'erreur ?
Partager