# Pattern Syntax

## Pattern

    pattern ::= 'None' | 'True' | 'False'
              | NUMBER | IDENTIFIER | STRING | variable
              | '(' [{pattern,}] ['*' variable] ')'

IDENTIFIER acts like a STRING here, meaning that it is taken as a literal value. All variables in patterns must be preceded by a `$`.

Pyke does not currently support complex NUMBERS (for no good reason -- email me if you need them).

## Pattern Variable

Pattern variables are simply called variable in the syntax:

    variable ::= '$'IDENTIFIER

The variable must not have a space between the `$` and the `IDENTIFIER`.

## Anonymous Variable

If the pattern variable IDENTIFIER begins with an underscore (_), the variable is an anonymous variable. It acts like a "don't care". Technically, this means that multiple uses of the same IDENTIFIER may stand for different values. The name of the IDENTIFIER after the underscore is ignored and may be used to document the use of the anonymous variable.

## Rest Variable

The `*variable` at the end of a tuple pattern will match the rest of the tuple. Thus, `variable` is always bound to a (possibly empty) tuple.

The syntax is taken from rest parameter syntax in Python function definitions. The difference here is that the variable needs a `$` on it.

You may use either a named variable or an anonymous variable here.

Copyright © 2007-2009 Bruce Frederiksen

Page last modified Thu, May 14 2009.