Hay esta función de índice en "Programación de Erlang":¿Por qué se usa "cuándo" en esta función?
index(0, [X|_]) -> X;
index(N, [_|Xs]) when N>0 -> index(N-1, Xs)
no es la guardia "cuando N> 0" superfluo debido a la coincidencia de patrones? El índice de llamadas (0, Lista) nunca terminará en la segunda cláusula, así que N siempre será> 0. ¿O estoy totalmente equivocado aquí?
no sé Erlang (solo OCaml) así que lo dejo como un comentario: ¿Qué patrón coincidiría con N == - 1 Mi conjetura sería el segundo (si no fuera por el guardia) –
Rune FS , Ese fue mi primer pensamiento también, pero el índice (-1, [1,2,3]) da como resultado "** error de excepción: ninguna prueba de coincidencia de cláusula de función: índice (-1, [1,2,3])" –
pero si quita el protector, ¿eso no concuerda entonces? –