Il y a cette fonction d'index dans « Erlang Programmation »:Pourquoi "quand" est-il utilisé dans cette fonction?
index(0, [X|_]) -> X;
index(N, [_|Xs]) when N>0 -> index(N-1, Xs)
est-ce pas la garde « lorsque N> 0 » superflu en raison de la correspondance de motif? L'indice d'appel (0, Liste) ne finira jamais dans la deuxième clause, donc N sera toujours> 0. Ou ai-je totalement tort ici?
ne sait pas Erlang (seulement OCaml) donc je vais laisser comme un commentaire: Quel modèle correspondrait N == - 1 Ma conjecture serait la seconde (si ce n'était pas pour la garde) –
Rune FS , Cela a été ma première pensée aussi, mais l'index (-1, [1,2,3]) aboutit à "** erreur d'exception: pas de test de correspondance de clause de fonction: index (-1, [1,2,3])" –
mais si vous supprimez le garde ne correspond pas alors? –