đ Quiz
Question 1
Comment définir la valeur de retour
v
d'une fonctionf
? â± 10ââ
A. Il suffit de nommer la valeur result
B. Faire return v
C. v
constitue la derniĂšre ligne de f
Réponse
A. Il suffit de nommer la valeur result
â
B. Faire return v
â
C. v
constitue la derniĂšre ligne de f
â
Question 2
Comment écrire fonction
add
prenant 2string
s et renvoyant unint
â± 20ââ
A. let add a b = a + b
B. let add (a: string) (b: string) = (int a) + (int b)
C. let add (a: string) (b: string) : int = a + b
Réponse
A. let add a b = a + b
â
Mauvais type inféré pour
a
etb
:int
B. let add (a: string) (b: string) = (int a) + (int b)
â
Il faut spécifier le type de
a
etb
.Il faut les convertir en
int
.Le type de retour
int
peut ĂȘtre infĂ©rĂ©.
C. let add (a: string) (b: string) : int = a + b
Ici,
+
concatĂšne lesstring
s.
Question 3
Que fait le code
add >> multiply
? â± 10ââ
A. Créer un pipeline
B. Définir une fonction
C. Créer une composition
Réponse
A. CrĂ©er un pipeline â
B. DĂ©finir une fonction â (mais ce n'est pas faux)
C. CrĂ©er une composition â
Question 4
A. let ? _ = ()
B. let ? x = x
C. let ? f x = f x
D. let ? x f = f x
E. let ? f g x = g (f x)
đĄ Il peut s'agir d'opĂ©rateurs
Réponse
A. let inline ignore _ = ()
B. let id x = x
C. let inline (<|) func arg = func arg
D. let inline (|>) arg func = func arg
E. let inline (>>) func1 func2 x = func2 (func1 x)
Question 5
Que signifie ces signatures de fonction : Combien de paramĂštres ? Leur type ? Le type du retour ? â± 60ââ
A. int -> unit
B. unit -> int
C. string -> string -> string
D. ('T -> bool) -> 'T list -> 'T list
Réponse
A. int -> unit
1 paramĂštre
int
- pas de valeur renvoyée
B. unit -> int
Aucun paramĂštre - renvoie un
int
C. string -> string -> string
2 paramĂštres
string
- renvoie unestring
D. ('T -> bool) -> 'T list -> 'T list
2 paramÚtres : un prédicat et une liste - renvoie une liste
đĄ Il s'agit de la fonction List.filter predicate list
Question 6
Quelle est la signature de la fonction
h
ci-dessous ? â± 30ââ
A. int -> int
B. int -> string
C. int -> int -> string
D. int -> int -> int
đĄ %i{a}
indique que a
est un int
Réponse
C. int -> int -> string
â
let f x = x + 1
â f: (x: int) -> int
» 1
â int
â x: int
â x + 1: int
let g x y = $"{+x} + {+y}"
â (x: int) -> (y: int) -> string
» %i{x}
â int
» $"..."
â string
let h = f >> g
» h
peut s'écrire let h x y = g (f x) y
» MĂȘme x
que f
â int
, mĂȘme y
que g
â int
âïž Note : cet exemple illustre une mauvaise utilisation de >>
car les fonctions composées ont une arité différente (f
a 1 paramĂštre, g
en a 2)
Question 7
Combien vaut
f 2
? â± 10ââ
A. 1
B. 3
C. -1
Réponse
C. -1
â
Contre-intuitif, non ? On s'attend à ce que f décrémente de 1.
On comprend mieux ce qui se passe en écrivant
f
ainsi :let f x = 1 - x
đĄ Astuce : la fonction qui dĂ©crĂ©mente de 1 peut s'Ă©crire :
let f = (+) -1
(cela marche ici car+
est commutatif alors que-
ne l'est pas)let f x = x - 1
DerniĂšre mise Ă jour
Cet article vous a-t-il été utile ?