Collections language
An extension to the Base Language that adds support for collections.
Introduction
Collection language provides a set of abstractions that enable the use of a few most commonly used containers, as well as a set of powerful tools to construct queries. The fundamental type provided by the collections is sequence
, which is an abstraction analogous to Iterable in Java, or IEnumerable in .NET. The containers include list
(both array-based and linked list), set
and map
. The collections language also provides the means to build expressive queries using closures, in a way similar to what LINQ does.
Null handling
Collections language has a set of relaxed rules regarding null elements and null sequences.
Null sequence is still a sequence
Null
is a perfectly accepted value that can be assigned to a sequence variable. This results simply in an empty sequence.
Null is returned instead of exception throwing
Whereas the standard collections framework would have to throw an exception as a result of calling a method that cannot successfully complete, the collection language's sequence and its subtypes would return null
value. For example, invoking first
operation on an empty sequence will yield a null
value instead of throwing an exception.
Skip and stop statements
skip
Applicable within a selectMany
or forEach
closure. The effect of the skip
statement is that the processing of the current input element stops, and the next element (if available) is immediately selected.
stop
Applicable within a selectMany
closure or a sequence initializer closure. The stop statement causes the construction of the output sequence to end immediately, ignoring all the remaining elements in the input sequence (if any).