The set of routines and iters that may be called on a type is called the interface of that type. A type interface may not contain conflicting signatures. An interface I1 conforms to an interface I2 if for every routine or iter f2 in I2 there is a unique conforming routine or iter f1 in I1. This ensures that calls made on a type can be handled by any of its subtypes. Sather source files consist of semicolon separated lists of abstract type definitions and classes.
Abstract types specify interfaces without implementation.
Classes define types with implementations. Abstract type definitions specify interfaces without implementations. Abstract type definitions may be parameterized by one or more type parameters within enclosing braces. The scope of abstract type names is the entire program. Two abstract type definitions may define types with the same name only if they specify a different number of type parameters.