2008-11-28 7 views
-2

Comment évaluer une expression, avec une liste de valeurs pour les variables qu'elle contient?Comment puis-je évaluer une expression?

eval::[(Variable,Integer)]->Expr->Integer 

Exemple:

eval[("x",2), ("y",4)](Mult(Plus(Var "x") (Const))(Var "y"))= 12 

Répondre

1

variable et Expr ne sont pas types inbuild dans Haskell.

Si vous utilisez une bibliothèque ou que vous travaillez sur une partie d'un programme plus important, il a peut-être les capacités que vous recherchez.

Si vous avez défini ces types vous-même, alors c'est à vous de décider.

Si c'est pour des cours, alors vous voudrez peut-être lire sur les grammaires et les techniques d'analyse syntaxique. Essayez de briser la chaîne en jetons et de construire une représentation symbolique que vous pouvez évaluer. Si vous ne l'avez pas déjà trouvé http://www.zvon.org/other/haskell/Outputglobal/index.html est un bon site de référence.

Si vous êtes dans quelque chose de plus lourd (et que vous maîtrisez la programmation de haskell et de monadic), je vous conseillerais d'investir du temps pour apprendre à utiliser Parsec http://www.haskell.org/haskellwiki/Parsec.

Questions connexes