Google

PLT MzLib: Libraries Manual


class100.ss: Version-100-Style Classes

The class100, class100*, and class100*/names forms provide a syntax close to that of class, class*, and class*/names in MzScheme versions 100 through 103, but with the semantics of the current class.ss system (see Chapter 3). For a class defined with class100, keyword-based initialization arguments can be propagated to the superclass, but by-position arguments are not (i.e., the expansion of class100 to class always includes an init-rest clause).

The class100*/names form creates a new class:

(class100*/names local-names superclass-expr (interface-expr ···) initialization-variables 
  class100-clause 
  ···) 
 
local-names is one of 
  (this-variable super-make-object-variable)  
  (this-variable super-make-object-variable super-instanitate-variable) 
 
initialization-variables is one of 
  variable 
  (variable ··· variable-with-default ···)  
  (variable ··· variable-with-default ··· . variable)  
 
variable-with-default is 
  (variable default-value-expr)  
 
class100-clause is one of 
  (sequence expr ···)  
  (public public-method-declaration ···)  
  (override public-method-declaration ···)  
  (private private-method-declaration ···)  
  (private-field private-var-declaration ···)  
  (inherit inherit-method-declaration ···)  
  (rename rename-method-declaration ···)  
 
public-method-declaration is one of  
  ((internal-variable external-variable) method-procedure) 
  (variable method-procedure) 
 
private-method-declaration is one of  
  (variable method-procedure) 
 
private-var-declaration is one of  
  (variable initial-value-expr) 
  (variablevariable  
 
inherit-method-declaration is one of 
  variable 
  (internal-instance-variable external-inherited-variable) 
 
rename-method-declaration is 
  (internal-variable external-variable

In local-names, if super-instaniate-variable is not provided, the instantiate-like superclass initialization form will not be available in the class100*/names body.

The class100* macro avoids specifying local-names, instead implicitly binding this and super-init (and nothing for super-instaniate-variable).

(class100* superclass-expr (interface-expr ···) initialization-variables 
    class100-clause 
    ···

The class100 macro omits both local-names and the interface-exprs:

(class100 superclass-expr initialization-variables 
    class100-clause 
    ···

(class100-asi superclass instance-variable-clause ···)      SYNTAX

Like class100, but all initialization arguments are automatically passed on to the superclass initialization procedure by position.

(class100*-asi superclass interfaces instance-variable-clause ···)      SYNTAX

Like class100*, but all initialization arguments are automatically passed on to the superclass initialization procedure by position.