Почему шаблон OCaml `zero -> zero`, похоже, соответствует всему?

Вот фрагмент кода из моей книги, и я не уверен, как работает сопоставление, очевидно, потому что кажется, что первый случай соответствует всему. Вот предупреждения, которые бросает мне Ocaml:

# 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
5
задан Gilles 'SO- stop being evil' 16 September 2012 в 20:51
поделиться