7 Virtual Patterns and Final Patterns as Superpatterns

A virtual pattern cannot be used as a super pattern as shown in the following example:
A::< (# ... #);
B: A(# ... #)

Previous version of BETA has supported the use of virtual patterns as super patterns, but due to efficiency considerations virtual super patterns are no longer supported.

A virtual pattern that has been final bound may be used as a superpattern as shown in the following example:

A:: (# ... #); 
B: A(# ... #)

The situation may also occur in a more indirect way:

graph:
   (# node:< (# ... #);
      nodeList: @list(# element::< node #);
      ...
   #);

Here the virtual further binding of element in list is not allowed, since node is itself virtual.

The current version of the compiler will allow final binding using a pattern that is itself virtual. That is, you can do this:

graph:
  (# node:< (# ... #);
     nodeList: @list(# element:: node #);
     ...
  #);


BETA Language Modifications - Reference Manual
© 1999-2002 Mjølner Informatics
[Modified: Sunday October 22nd 2000 at 0:53]