• Aucun résultat trouvé

S´erie d’exercices #3½ IFT-2035 September 23, 2021

N/A
N/A
Protected

Academic year: 2022

Partager "S´erie d’exercices #3½ IFT-2035 September 23, 2021"

Copied!
1
0
0

Texte intégral

(1)

S´erie d’exercices #3 ½

IFT-2035 September 23, 2021

Petit ´ evaluateur

Soit les d´eclarations de type suivantes utilis´ees pour un mini-interpr´eteur d’expressions arithm´etiques:

type Var = String

-- Expressions du code source en forme ASA.

data Exp = Enum Int -- Une constante

| Evar Var -- Une variable

| Elet Var Exp Exp -- Une expr "let x = e1 in e2"

| Ecall Exp Exp -- Un appel de fonction -- Valeurs renvoy´ees.

data Val = Vnum Int -- Un nombre entier

| Vprim (Val -> Val) -- Une primitive

Les fonctions pr´ed´efinies sont l’addition, la soustraction, la multiplication, et la division, li´ees aux variables “+”, “-”, “*”, et “/”, respectivement. Ces fonctions prennent deux arguments qui sont pass´es de mani`ere currifi´ee. Par exemple une expression telle que “letx= 3inx+ 4” est repr´esent´ee par la structure suivante de typeExp:

sampleExp = Elet "x" (Enum 3)

(Ecall (Ecall (Evar "+") (Evar "x")) (Enum 4)) L’environnement initial pr´ed´efini les quatre fonctions:

mkPrim :: (Int -> Int -> Int) -> Val

mkPrim f = Vprim (\(Vnum x) -> Vprim (\(Vnum y) -> Vnum (f x y))) -- L’environnement initial qui contient toutes les primitives.

type Env = [(Var, Val)]

pervasive :: Env

pervasive = [("+", mkPrim (+)), ("-", mkPrim (-)), ("*", mkPrim (*)), ("/", mkPrim div]

Ecrire la fonction´ evalqui prend un environnement qui d´ecrit les variables li´ees (et leur valeur) ainsi qu’une expression et qui renvoie le r´esultat de l’´evaluation de l’expression. I.e.

eval :: Env -> Exp -> Val

de sorte queeval pervasive sampleExprenvoieVnum 7.

1

Références

Documents relatifs

Si on remplace le processeur par un LMC-C identique ` a LMC-0 mais avec un cache de latence 10ns, quel est le maximum d’instructions ADD qu’il pourra ex´ ecuter en une seconde2. Si

Consid´ erer deux choix de l’ordonnanceur: soit il peut permettre ` a n’importe quel processus de s’ex´ ecuter sur le premier processeur libre, soit il peut limiter chaque processus

Toujours diff ´erent pour chaque type de machine La m ´emoire manque toujours de structure. Irr ´egularit ´es du

Cette grammaire est récursive à gauche, ce qui pose problème pour cer- taines techniques d'analyse syntaxique : En eet, dans un parseur avec analyse descendante (top down), la

´ Ecrire la fonction optimize qui va essayer de simplifier une expression en ´ eliminant toutes les multiplications par 1 et 0, ainsi que les additions ` a

´ Ecrire la fonction optimize qui va essayer de simplifier une expression en ´ eliminant toutes les multiplications par 1 et 0, ainsi que les additions ` a

Comme d’habitude, vous pouvez pr´ esumer que toutes les entit´ es num´ eriques sont de type

Bien sˆ ur, pour ˆ etre utile l’arbre doit ˆ etre maintenu dans l’ordre: toutes les cl´ es dans la branche de gauche d’un Node doivent ˆ etre plus petites que la cl´ e du