xxxxxxxxxx
void main(){
assert(number(10).next.value==11 );
assert(zero()==number(0) );
assert(zero()==number(1).previous );
auto ten = number(10);
auto nine = ten.previous;
assert(nine == number(9));
}
auto number(int value = 0){
static struct Number {
int _value;
int value() {
return _value;
};
Number next() {
return Number(_value+1);
};
Number previous(){
return Number(_value-1);
};
int opCmp(Number other){
return _value - other.value;
};
}
return Number(value);
}
auto zero() {
return number(0);
}