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. Type parameter names are local to the abstract type definition and they shadow non- parameterized types with the same name.