• Aucun résultat trouvé

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
2
0
0

Texte intégral

(1)

S´erie d’exercices #3

IFT-2035 September 21, 2021

3.1 Mini ´ Evaluateur

Soit le code Haskell ci-dessous:

data Exp = Enum Int -- Une constante

| Eplus Exp Exp -- e1 + e2

| Etimes Exp Exp -- e1 * e2

| Eneg Exp -- (- e)

| Egt Exp Exp -- e1 > e2

| Enot Exp -- (not e)

| Eif Exp Exp Exp -- if e1 then e2 else e3 data Val = Vnum Int

| Vbool Bool eval :: Exp -> Val

Exp est un type qui repr´esente des expressions simples incluant des op´erateurs arithm´etiques et bool´eens. Valest un type qui repr´esente des valeurs enti`eres ou bool´eennes. eval est une function qui doit ´evaluer une expression et retourner la valeur qui en r´esulte.

1. ´Ecrire la fonctioneval

2. Proposer des changements au type Exp qui permettraient de r´eduire la redondance dans votre code

3.2 Des trous typ´ es

Dans le code ci-dessous,•repr´esente uneexpressionmanquante. Donner le type de l’expression manquante. E.g. pour la question 0, la r´eponse pourrait ˆetre:

• :Int → α. Comme d’habitude, vous pouvez pr´esumer que toutes les entit´es num´eriques sont de typeInt.

0. •1

1. λx→(2 +x− •) 2. [[10,9,8],•]

1

(2)

3. ([(+),(−)],•) 4. [(8,3),•]

5. λx→(x+• x)

6. λx→(• (x+ 1) (x−1), x) 7. λx→λy→(x y+•x) 8. map(λx→x+ 1) • 9. map • [5,6,7]

10. letx=• inmap snd(x[42])

Rappel: les fonctionsmap etsnd sont (pr´e)d´efinies comme suit:

mapf [] = []

mapf (x:xs) =f x:mapf xs snd (x, y) =y

3.3 Equivalence ´

Deux expressions ne sont ´equivalentes que si l’on peut remplacer l’une par l’autre dans n’importe quel programme sans affecter le comportement de ce programme (les diff´erences de performance ne comptent pas).

E.g. x + y est ´equivalent `a y + x, mais x + y - y n’est pas ´equivalent `a x puisqu’il se peut queyn’existe pas, n’aie pas le bon type, ou que son ´evaluation ne termine pas.

Indiquer si les expressions Haskell ci-dessous sont ´equivalentes ou pas.

1. letf x y=x+yin f a b =? letf (x, y) =x+y inf (a, b) 2. letf x=x+y ing f =? letf =λx→x+y ing f 3. letx= 3 ing x =? g3

4. λx→x+y =? λy→y+x

5. λx y→g (x+y) =? λa b→g (b+a) 6. λx x→g x =? λa b→g a

7. λx y→g y x =? λ(x, y)→g(y, x) 8. λa→[a, a] =? λb→(b:b)

9. λa→λb→b a =? λy x→x y 10. map(λa→a g) [b] = [b g]?

2

Références

Documents relatifs

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

Tracez la courbe repr´ esentative de f dans un rep` ere orthonorm´

Si f est une fonction vectorielle d´ efinie sur un intervalle compact [a, b] de R , on appellera suite associ´ ee ` a f toute suite (ϕ n , θ n ) de couples de fonctions en escalier

Remarque 4.1 Si f, g sont deux fonctions num´ eriques ou vectorielles int´ egrables sur [a, b] et si leurs valeurs ne diff` erent qu’en un nombre fini de points de [a, b], leurs

Rep´erer les diff´erents points d’´equilibre et les trajectoires p´eriodiques. Discuter de leur stabilit´e. On simule ce probl`eme `a l’aide d’une m´ethode d’Euler.. Exercice