As in Beta, a pattern in qBeta may be virtual:

<Signature>:< <ObjectGenerator>

A further binding may be specified as:

<Signature>::< <ObjectGenerator>

A final binding may be specified as:

<Signature>:: <ObjectGenerator>

The semantics of virtual patterns is the same as in Beta. However, the rules for parameters in qBeta differs from Beta. The exact semantics has not yet been decided, but various alternatives are being considered.

Virtual patterns as arguments

An argument of a pattern may be specified as virtual

%with V: ?integer %do% body:< Action:
   ...

The parameter body is a virtual pattern qualified by he pattern Action. An invocation of %with%do% may have one of the following forms:

%with exp %do% myAction

where myAction is subpattern of Action. Or:

%with exp %do% 
   item1
   item2
   item3

where the argument following %do% is an implicit subpattern of Action having the form:

Action
   item1
   item2
   item3

Example

An array pattern may be specified as follows:

array(range: ?integer, elm:< Object): 
   ...

An instance of array may be declared as follows:

   A: = array(100,Integer)

Note

There is an implementation issue regarding simple values (like Integer) versus objects (like Person).