đ Quiz
Question 1
Comment définir la valeur de retour
vd'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
addprenant 2strings 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
aetb:int
B. let add (a: string) (b: string) = (int a) + (int b) â
Il faut spécifier le type de
aetb.Il faut les convertir en
int.Le type de retour
intpeut ĂȘtre infĂ©rĂ©.
C. let add (a: string) (b: string) : int = a + b
Ici,
+concatĂšne lesstrings.
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
Retrouvez le nom de ces fonctions Core â± 60ââ
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 _ = ()
Ignore : prim-types.fs#L459
B. let id x = x
Identity : prim-types.fs#L4831
C. let inline (<|) func arg = func arg
Pipe Left : prim-types.fs#L3914
D. let inline (|>) arg func = func arg
Pipe Right : prim-types.fs#L3908
E. let inline (>>) func1 func2 x = func2 (func1 x)
Compose Right : prim-types.fs#L3920
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
hci-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
fainsi :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
Mis Ă jour
Ce contenu vous a-t-il été utile�