They support writing code in an applicative style, although iterators eliminate much of the motivation for programming that way. Like other Sather methods, method closures follow static typing and behave with contravariant conformance. Immutable and Reference Objects Sather distinguishes between reference objects and immutable objects. Imutable objects never change once they are created. When one wishes to modify an immutable object, one is compelled to create a whole new object that reflects the modification.
Immutable types can have several performance advantages over reference types.
Immutable types have no heap management overhead, they don't reserve space to store a type tag, and the absence of aliasing makes more compiler optimizations possible. Balanced against these positive factors in using an immutable object is the overhead that some C compilers introduce in passing the entire object on the stack. This problem is worse in immutable classes with many attributes. For example, the reference class ' INTI ' implements immutable infinite precision integers and can be used like the built-in immutable class ' INT '. The standard string class ' STR ' is also a reference type but behaves with immutable semantics.