Aquí hay un fragmento de código de mi libro, y no estoy seguro de cómo funciona la coincidencia aparentemente porque parece que el primer caso coincide con todo. Aquí están las advertencias que Ocaml me lanza:¿Por qué el patrón OCaml `zero -> zero` parece coincidir con todo?
# let zero = 0;;
# let one = 1;;
# let rec fib i =
match i with
zero -> zero
| one -> one
| j -> fib (j - 2) + fib (j - 1);;
Characters 57-60:
Warning: this match case is unused.
Characters 74-75:
Warning: this match case is unused.
| one -> one
^^^
| j -> fib (j - 2) + fib (j - 1);;
^
val fib : int -> int = <fun>
# fib 1;;
- : int = 1
# fib 2002;;
- : int = 2002
Puede utilizar las constantes si hacer algo como 'x donde x == cero' (sin embargo, se me escapa la sintaxis precisa) – hugomg
Puede usar' when' para agregar una prueba adicional a una coincidencia, pero no cambia el significado del patrón. Solo aplica una prueba adicional. Si su patrón es solo un identificador, esta es solo otra forma de escribir una declaración 'if'. (No hay nada de malo con las declaraciones' if', eso es lo que probablemente usaría para probar contra las constantes con nombre.) –
Gracias Jeffrey, encontré esta bonita perspicaz –