atomo-0.4: prelude/ordered.atomo
module: Ordered: {
succ := shift: 1
pred := shift: -1
shift: diff := from-ordering: (ordering + diff)
to: x by: diff :=
condition: {
diff == 0 ->
error: @zero-diff
((diff < 0 && ordering < x ordering) ||
diff > 0 && ordering > x ordering) ->
[]
otherwise ->
me . ((shift: diff) to: x by: diff)
}
up-to: x := me to: x by: 1
down-to: x := me to: x by: -1
}
class: Integer: {
include: Ordered
ordering := me
from-ordering: n := n
}
class: Character: {
include: Ordered
ordering := ord
from-ordering: n := n chr
}
class: Double: {
include: Ordered
ordering := as: Integer
from-ordering: n := n as: Double
shift: (n: Double) := + n
}
class: Rational: {
include: Ordered
ordering := as: Integer
from-ordering: n := n as: Rational
shift: (n: Rational) := + n
}