Thanks for all the good explanations! I was misdirected by the fact that the warning location was on the empty case, but based on descriptions I think I understand why now.
I find it interesting that there is a bit of a conflict between "good practice" heuristics:
- Use -Wall (to eliminate questionable code that triggers warnings), and
- Avoid _ in patterns in favor of explicit statement of the cases.
So it would appear that the advice (per Kim-Ee) to add an "otherwise" as a third guard allows me to satisfy the compiler while documenting to the human reader that the definition is really complete without it.
Thanks,
-jn-