Bonjour

Ayant crééer un petit programme Haskell (compilé) j'aimerais pourvoir en exécuter certaines opérations en ligne de commande.
Par exemple

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
splot :: [Float -> Float] -> Coord -> Coord -> IO ()
splot [f] dom rang = ....
crée un fichier présentant la courbe d'une fonction 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
   ../bidule   splot     "[\x->x*sin(x)]"    "(0,3)"   "(0,2)"
On a args!!0 = "[splot]"
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 )

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
main=do
     args <- getArgs
     runInterpreter $ do { setImports ["Prelude"]; eval $ consatSpaced args }
La compilation s'effectue sans message d'erreur, et la commande dans terminal ne produit également aucun message ,
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 ?