Comment simplifier une expression en utilisant l'arithmétique de base?Types algébriques dans haskell
Répondre
Vous pouvez utiliser la technique décrite ici: http://augustss.blogspot.com/2007/04/overloading-haskell-numbers-part-2.html. Faites en sorte que votre type soit des classes de types nécassaires (Num, Fractionnel, Flottant) de sorte que -, +, * et ainsi de suite fonctionne pour votre type. Ensuite, si l'arbre d'expression est finalement construit, vous pouvez opérer dessus pour voir ce que vous pouvez simplifier.
Je ne suis pas sûr de ce que vous voulez dire, mais si vous avez un type de données d'expression, vous pouvez définir une fonction d'évaluation récursive. Dans ce cas, eval signifie simplifier.
Par exemple,
data Exp = Lit Int
| Plus Exp Exp
| Times Exp Exp
eval :: Exp -> Int
eval (Lit x) = x
eval (Plus x y) = eval x + eval y
eval (Times x y) = eval x * eval y
Il devient vraiment intéressant une fois que vous ajoutez des variables à la langue, mais c'est la forme la plus élémentaire d'une expression évaluateur.
Module Expr où
- Les variables sont nommées par des chaînes, supposées être des identificateurs. type Variable = Chaîne
- Représentation d'expressions. data Expr = Const Entier | Var Variable | Plus Expr Expr | Minus Expr Expr | Mult Expr Expr dériver (Eq, Show)
Simplifications tel que 0 * e = e * 0 = 0 et 1 * e = e * 1 = 0 + e = e + 0 = e-0 = e et simplifier les sous-expressions constantes, p.ex. Plus (Const 1) (Const 2) deviendrait Const 3. Je ne m'attendrais pas à ce que des variables (ou variables et constantes) soient concaténées: Var "st" est une variable distincte de Var "s".
ils ont besoin d'être écrit comme la suivante simplifier ((Const 0 Plus (Var'x '))) = Var "x"
- 1. plusieurs types de paramètres dans les classes de type haskell
- 2. Existe-t-il un moyen d'implémenter des types algébriques en Java?
- 3. itérations complexes dans haskell
- 4. syntaxe dans l'expression - Haskell
- 5. Rayons clairs dans Haskell?
- 6. Instructions multiples dans Haskell
- 7. Fusionner trier dans Haskell
- 8. (émulé) Macros dans Haskell?
- 9. Listes intermédiaires dans Haskell
- 10. types de données de correspondance de motif et leur nom imbriqué dans Haskell
- 11. Obtention du dossier Local AppData dans Haskell
- 12. Haskell: les types de données Algebric dont les variables de type doivent être une instance d'une classe de types
- 13. Jquery comme sélecteur dans Haskell
- 14. Enregistrement de graphiques dans Haskell
- 15. Haskell Typeclass raccourci
- 16. Haskell Conditionals
- 17. Haskell et Quadratics
- 18. Pourquoi ne pouvez-vous pas définir de nouveaux types dans un argument de modèle C++?
- 19. Haskell: Exemple d'héritage HStringTemplate?
- 20. Types de types dynamiques dans Groovy
- 21. Simple haskell string gérer
- 22. comparer le contenu de chaîne dans haskell
- 23. Comment importer un fichier .hs dans Haskell
- 24. Pool de connexion DB simultané dans Haskell
- 25. Comment attraper une exception arbitraire dans Haskell?
- 26. Afficher les étapes de réduction dans Haskell
- 27. boucle à travers deux variable dans Haskell
- 28. Ecriture d'une fonction de temps dans Haskell
- 29. Palindromes en Haskell
- 30. elemIndices à Haskell