the three singleton patterns: None, False, True

match by *identity* (x is y in Python syntax) rather than *equality*
(x==y)

Recall that *literal patterns are not expressions*, but directly
denote a specific value.

From a pragmatic point of view,

- we want to allow using negative and even complex values as literal patterns, but they are not atomic literals (only unsigned real and imaginary numbers are).

E.g. -3+4j is syntactically an expression of the form

- BinOp(UnaryOp('-', 3), '+', 4j).

Since expressions are not part of patterns, we had to add explicit syntactic support for such values without having to resort to full expressions.