Programmation Fonctionnelle Avanc´ee – Master 1
TP 1
Mehdi Dogguy
Tous les sujets de TP seront disponibles `a cette adresse :
http://www.pps.jussieu.fr/~dogguy/?page=teaching/pfa
Les lignes commen¸cant par (?) sont des indications.
Exercice 1 : Configuration d’Emacs
Emacs dispose d’un mode Haskell qui porte le nom haskell-mode. Il faut
dire `a Emacs comment charger correctement le mode en vous aidant du code qui
se trouve `a l’adresse suivante :
http://is.gd/haskell el
Ajoutez le contenu de ce fichier `a la fin de votre .emacs (et rechargez ce
dernier). Ce mode fournit quelques fonctions utiles que l’on va d´ecouvrir tout
au long de ce TP.
(?) Le raccourci clavier C-c C-h permet de d´ecouvrir la liste des raccourcis
clavier d´efinis par le mode charg´e.
Exercice 2 : Listes
´
Ecrivez les fonctions suivantes sur les listes et donnez leur ´equivalent dans
le pr´elude de Haskell :
appliquer :: (c -> d) -> [c] -> [d] qui prend en argument une
fonction fet une liste let qui retourne la liste o`u tous les ´el´ements ont
´et´e tranform´es avec f.
concatener :: [z] -> [z] -> [z] qui concat`ene deux listes.
longueur :: [a] -> Int qui calcule la longueur d’une liste.
somme :: [Int] -> Int qui calcule la somme des ´el´ements d’une liste.
Proposez une impl´ementation de somme qui utilise foldl.
combiner :: (a -> b -> c) -> [a] -> [b] -> [c] qui combine les
´el´ements de deux listes avec la fonction donn´ee en premier argument.
(?) La documentation de Prelude.hs est disponible `a cette adresse
http://is.gd/Prelude hs.
(?) Le raccourci clavier C-c C-l permet de charger le fichier ouvert dans le
mode interactif de Haskell.
Exercice 3 : Perroquet
Voici un programme qui imprime ce qu’il lit sur son entr´ee standard :
main : : IO ( )
main = i n t e r a c t (\x>x )
On peut compiler ce programme et obtenir un ex´ecutable Exo1 de la mani`ere
suivante :
$ ghc --make -fwarn-missing-signatures -Werror Exo1.hs
Dans la suite, impl´ementez chacune des transformations demand´ees et re-
compilez votre programme :
1. Remplacez la fonction anonyme par une fonction d´efinie localement.
V´erifiez que votre programme fait toujours la mˆeme chose.
2. Transformez ce programme pour qu’il affiche le nombre de lignes lues.
3. Affichez le nombre de caract`eres par ligne.
4. Affichez le nombre de caract`eres par ligne (sans les espaces).
5. Affichez le nombre de caract`eres lus au total.
6. Affichez, au maximum, 80 caract`eres par ligne.
7. Reformattez le texte lu sur 80 colonnes.
(?)C-c M-/ affiche interactivement la signature de l’identifiant poine par
le curseur.
(?)C-c C-t demande `a la boucle interactive d’afficher le type de l’identifiant
point´e par le curseur.
Exercice 4 : List comprehensions
1. Trouver la somme des entiers inf´erieurs `a 1000 dont le carr´e est impair.
2. Trouver la liste des entiers ninf´erieurs `a 100000 qui satisfont l’´equation
suivante : (n+2)2= (n+1)2+ n2.
3. Trouver la liste des entiers premiers inf´erieurs `a 200.
4. Trouver la somme des multiples de 3 et 5 qui sont inf´erieurs `a 100.
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !