2.9 KiB
2.9 KiB
Haskell 1
### Exercice 1
- C'est un langage qui execute ses instructions de manière séquentielle. Cf cours de THprog ^^.
- C'est un langage qui manipule des fonctions, des objets et dont l'execution est plutôt arborescente.
- Dans un langage fonctionnel pur, la valeur ou état d'une variable n'est pas modifiable. L'instruction
letn'alloue pas une case mémoire donnée au programme, mais affecte un nom à une valeur. - Un langage fonctionnel pur n'a pas d'effet de bord (side effect). Simplement une entrée, et une sortie.
- C'est un paradigme différent, adapté à certains algorithmes. Les erreurs de développement sont moins fréquentes car l'objectif d'une fonction nommée est en général plus clair que celui d'une série d'instructions. (Plus pas de variable qui traine et dont la valeur est modifiée par une impromptue ligne perdue).
Exercice 2
- L'évaluation paresseuse décrit la non execution/évaluation de segments de code dont le résultat ne sera pas utilisé. Par exemple, dans une conjonction logique, si un terme est évalué à faux, alors il n'est plus utile d'évaluer les autres.
- Le programme évalue d'abord addTwo(4) -> 6. Puis il peut ensuite évaluer addTwo(addTwo(4)) -> addTwo(6) -> 8. Enfin, il peut évaluer addTwo(addTwo(addTwo(4))) -> addTwo(8) -> 10.
- Le typage statique signifie qu'une variable du code a un et un seul type qui lui est assigné par le compilateur. Cela permet de ne pas confondre les variable et de ne pas effectuer d'opération illégales car fausses par maladresse (ajouter un entier et une chaine de caractère est souvent signe de code non intentionnel).
- Cela signifie que le compilateur va essayer de comprendre les types des variables utilisées de lui-même, en utilisant le contexte et les types connus. Par exemple, si l'expression
7+xest présente, le compilateur va associée à la variablexle type «entier».
Ça évite d'avoir à préciser tous les types, ce qui peut être redondant, notamment dans les fonctions manipulant de nombreuses variables.
5. Le compilateur devrait comprendre que a est de type «entier» par inférence de type justement.
Exercice 3
- Haskell a d'autres compilateurs, comme l'
UHCou leLHC. - J'installe Haskell.... AH. 1Go d'installation. Je vais faire le reste des questions ...
- La plateforme Haskelle contient:
- GHC le compilateur
- Cabal le gestionnaire de paquets Haskell
- Stack un outil aidant au développement de projets Haskell.
- haskell-language-server une api permettant d'utiliser Haskell dans son IDE favori.
- Le mode interactif de GHC permet d'évaluer des expression Haskell de manière interactive, plutôt que de compiler puis executer l'intégralité du programme. C'est utile pour deboguer un programme, ou jouer avec/tester les fonctionnalités de Haskell.
- Pour lancer GHCi, il faut taper la commande ....
ghci. - Pour quitter, on peut lancer le caractère
EOF, typiquement avec Ctrl+D.