
On Mon, Jul 9, 2018 at 12:20 PM Johannes Waldmann
Why require that each "if-then" has an "else" while still allowing incomplete sets of patterns? We could define "if p then a" by translating to "case p of { True -> a }"
Hi Johannes, `if p then a` can only ever have value `a`, so why not just write `a` in the first place? Of course, it could fail to evaluate... but that's not something (as a Haskell 1.0 program anyway) you could detect or recover. Incomplete case matches, in contrast, can do meaningful things---to name parts of a data structure, or perhaps reflecting a programmer-believed invariant. Sure, they let in degenerate cases, like `case p of {True -> a}`, but that's different from adding syntax to the language that only expresses degenerate cases. /g