Bonjour,
En Ocaml on a les deux syntaxes suivantes :
1 2 3 4 | (*cette fonction ne sert à rien*) let rec a = function |[] -> [] |t::q -> t::(a q);; |
ou bien :
1 2 3 | let rec a l = match l with |[] -> [] |t::q -> t::(a q);; |
Dans un cas on est pas obligé de préciser le deuxième paramètre alors que dans l’autre cas on doit le préciser.
Donc je me demandais si à part cela (donc dans ce cas function
permet juste un gain de temps), il y avait une réelle différence entre match with
et function
.
Déjà je remarque, qu’avec function
, on ne peut pas faire explicitement appel à l’argument. Dans le sens ou par exemple on pourrait faire avec match with
:
1 2 | let a l = match l with |_ -> l (*or ici on ne peut pas faire directement appel à l avec function*) |
Ou alors il existe un moyen mais je ne le connais pas ?
Aussi au niveau de la façon dans le compilateur gère function
et match with
, y at-il une différence ?
De même sur plein de sites il est marqué que la curryfication est très pratique, mais je ne vois pas vraiment pourquoi (à part que c’est un gain de temps *) ? Par exemple on peut faire :
1 2 | let g x y = x+y;; let h = g 1;;(*curryfication*) |
Donc on a juste pas à récrire la fonction h
c’est tout, et je ne vois pas d’autres utilités de ce principe.
Enfin dernière question, quand on fait un match est-il possible de return
le wildcard _
?
Merci d’avance !