The GenericsLibrary of Nectar: Part Two.
Principles of the GL:
- 'Algorithms'
- 'Containers'
- 'Traits'
The Algorithms have to be generic and fit-it-all:
The following implementation implements and iterator in a generic algorithmic way.
impl iterator : trait iterator_traits
{
let begin(let self)
{
must_pass(self._begin != self._end);
let begin := self._begin;
return begin;
}
let end(let self)
{
must_pass(_begin != _end);
let end := self._end;
return end;
}
let size(let self)
{
must_pass(self._size > 0);
return self._size;
}
};
Here you don't have to know what it does exactly, you can just plug it in every type that conforms to iterator_traits.