Value did not match any of the branches in a case expression

This means that none of the conditions in a case expression were true. For example, consider this case expression:

{? 'A'  if  n < 5,
   'B'  if  n > 5

When n == 5 specifically, both conditions will be false, and this error will be generated.

The reason this is an error is that every expression must have a value; if all the conditions are false, we do not know what value the whole case expression should have.

This error may also occur when defining a function via pattern matching, if none of the patterns match a particular input. For example, consider the below definition of f:

f : N -> N
f(3) = 99
f(2n) = n

If we call this function on an odd input besides 3, it will generate an error, since neither of the patterns matches:

Disco> f(5)
Error: value did not match any of the branches in a case expression.

The reason the same error is generated is that internally, function definitions by cases are translated into case expressions. For example, the above definition for f is translated into something like

f : N -> N
f(m) = {? 99 if m is 3, n if m is 2n ?}