TD1 - LIPN

publicité
Principes de Programmation
TD1
25 janvier 2017
Exercice 1 (Typage et Fonctionnel).
Voici les λ-expressions d’opérateurs existants dans haskell :
flip
id
(||)
(&&)
(&&)
($)
(.)
x y z
=
=
=
=
=
=
=
x y
False _
True x
x z y
\x -> x
if x then x else y
False
x
\x -> \y -> x y
\f -> \g -> \x -> f(g x)
1. Que font ces opérateurs ?
2. Quels sont leurs types ?
3. Quels sont les types des fonctions suivantes :
owl
jackpot
dots
swing
bigmap
wtf
=
=
=
=
=
=
(.) $ (.)
($) . ($)
(.) . (.)
flip . (. flip id)
map ($3)
map $ ($) 3
4. Que font-elles ?
5. Que fait l’opérateur (!!) défini dans haskell par :
(!!) :: [a]
(x:_) !! 0
(_:l) !! n
[]
!! _
->
=
=
=
Int -> a
x
l !! (n-1)
undefined
1
Exercice 2 (Paresse et Listes).
Que font les programmes suivants :
un :: Int
un = un
deux :: Int
deux = (\_ -> 2) un
trois :: Int
trois = [un, 2, 3] !! 2
quatre :: Int
quatre = [2..] !! 2
cinq :: Int
cinq = [2..]
!!
(-1)
six :: Int
six = map (*2) [2..]
sept :: Int
sept = [2..7]
!!
!!
1
6
2
Téléchargement