natIsSemiring
Provides an implementation of the Semiring type class for natural numbers (Nat), enabling operations such as addition and multiplication following the rules of Peano arithmetic.
This instance defines the behavior for:
zero: The base natural numberNatZero, representing the additive identity.one: The smallest positive natural number, represented as the successor ofNatZero.plus: Addition of two natural numbers, defined recursively.times: Multiplication of two natural numbers, defined recursively using addition.compare: Comparison of two natural numbers, defined recursively.
Attributes
- Graph
-
- Supertypes
-
trait Ordering[Nat]trait PartialOrdering[Nat]trait Equiv[Nat]trait Comparator[Nat]trait Semiring[Nat]trait MultiplicativeSemigroup[Nat]trait AdditiveCommutativeMonoid[Nat]trait AdditiveCommutativeSemigroup[Nat]trait AdditiveMonoid[Nat]trait AdditiveSemigroup[Nat]trait Serializableclass Objecttrait Matchableclass AnyShow all
- Self type
-
natIsSemiring.type
Members list
Type members
Inherited classlikes
This inner class defines comparison operators available for T.
This inner class defines comparison operators available for T.
It can't extend AnyVal because it is not a top-level class or a member of a statically accessible object.
Value parameters
- lhs
-
the left-hand side value for infix comparison operations
Attributes
- Inherited from:
- Ordering
- Supertypes
-
class Objecttrait Matchableclass Any
Value members
Concrete methods
Compares two natural numbers represented using Peano arithmetic.
Compares two natural numbers represented using Peano arithmetic.
The comparison is performed as follows:
- If both numbers are
NatZero, they are considered equal, and the result is 0. - If one number is
NatZeroand the other is not, the result is -1 or 1 depending on the order. - If both numbers are successors, the comparison is performed recursively on their predecessors.
Value parameters
- x
-
the first natural number to be compared
- y
-
the second natural number to be compared
Attributes
- Returns
-
an integer representing the result of the comparison: - 0 if
xandyare equal - -1 ifxis less thany- 1 ifxis greater thany
Computes the sum of two natural numbers represented using Peano arithmetic.
Computes the sum of two natural numbers represented using Peano arithmetic.
The addition operation is implemented iteratively with tail recursion:
- If both numbers are
NatZero, the result isNatZero. - If at least one of the numbers has a successor (
Succ), the result is recursively incremented by adding the predecessors of the numbers.
Value parameters
- x
-
the first natural number to be added
- y
-
the second natural number to be added
Attributes
- Returns
-
the sum of the two natural numbers
xandy
Computes the product of two natural numbers represented using Peano arithmetic.
Computes the product of two natural numbers represented using Peano arithmetic.
The multiplication operation is implemented iteratively with tail recursion:
- If either number is
NatZero, the result isNatZero. - Otherwise, the result is computed by recursively adding one number to itself based on the value of the other number.
Value parameters
- x
-
the first natural number to be multiplied
- y
-
the second natural number to be multiplied
Attributes
- Returns
-
the product of the two natural numbers
xandy
Inherited methods
Attributes
- Definition Classes
-
AdditiveCommutativeMonoid -> AdditiveCommutativeSemigroup -> AdditiveMonoid -> AdditiveSemigroup
- Inherited from:
- AdditiveCommutativeMonoid
Returns true if x == y in the ordering.
Returns true if x == y in the ordering.
Value parameters
- x
-
the first value to compare
- y
-
the second value to compare
Attributes
- Definition Classes
-
Ordering -> PartialOrdering -> Equiv
- Inherited from:
- Ordering
Returns true if x > y in the ordering.
Returns true if x > y in the ordering.
Value parameters
- x
-
the first value to compare
- y
-
the second value to compare
Attributes
- Definition Classes
-
Ordering -> PartialOrdering
- Inherited from:
- Ordering
Returns true if x >= y in the ordering.
Returns true if x >= y in the ordering.
Value parameters
- x
-
the first value to compare
- y
-
the second value to compare
Attributes
- Definition Classes
-
Ordering -> PartialOrdering
- Inherited from:
- Ordering
Returns whether or not the other ordering is the opposite ordering of this one.
Returns whether or not the other ordering is the opposite ordering of this one.
Equivalent to other == this.reverse.
Implementations should only override this method if they are overriding reverse as well.
Value parameters
- other
-
the ordering to check
Attributes
- Returns
-
trueifotheris the reverse of this ordering,falseotherwise - Inherited from:
- Ordering
Tests if a is zero.
Tests if a is zero.
Attributes
- Inherited from:
- AdditiveMonoid
Returns true if x < y in the ordering.
Returns true if x < y in the ordering.
Value parameters
- x
-
the first value to compare
- y
-
the second value to compare
Attributes
- Definition Classes
-
Ordering -> PartialOrdering
- Inherited from:
- Ordering
Returns true if x <= y in the ordering.
Returns true if x <= y in the ordering.
Value parameters
- x
-
the first value to compare
- y
-
the second value to compare
Attributes
- Definition Classes
-
Ordering -> PartialOrdering
- Inherited from:
- Ordering
Returns x if x >= y, otherwise y.
Returns x if x >= y, otherwise y.
Type parameters
- U
-
a subtype of
T, used to preserve the specific type in the return value
Value parameters
- x
-
the first candidate value
- y
-
the second candidate value
Attributes
- Inherited from:
- Ordering
Returns x if x <= y, otherwise y.
Returns x if x <= y, otherwise y.
Type parameters
- U
-
a subtype of
T, used to preserve the specific type in the return value
Value parameters
- x
-
the first candidate value
- y
-
the second candidate value
Attributes
- Inherited from:
- Ordering
Attributes
- Inherited from:
- MultiplicativeSemigroup
Given f, a function from U into T, creates an Ordering[U] whose compare function is equivalent to:
Given f, a function from U into T, creates an Ordering[U] whose compare function is equivalent to:
def compare[U, T: Ordering](x: U, y: U, f: U => T) = Ordering[T].compare(f(x), f(y))
Type parameters
- U
-
the type of the values to be ordered
Value parameters
- f
-
the function to extract a
Tvalue from aUvalue
Attributes
- Returns
-
an
Ordering[U]that orders values by applyingfand comparing the results using this ordering - Inherited from:
- Ordering
Creates an Ordering[T] whose compare function returns the result of this Ordering's compare function, if it is non-zero, or else the result of others compare function.
Creates an Ordering[T] whose compare function returns the result of this Ordering's compare function, if it is non-zero, or else the result of others compare function.
Value parameters
- other
-
an Ordering to use if this Ordering returns zero
Attributes
- Returns
-
an
Ordering[T]that uses this ordering first, falling back tootherwhen values are equal - Example
-
case class Pair(a: Int, b: Int) val pairOrdering = Ordering.by[Pair, Int](_.a) .orElse(Ordering.by[Pair, Int](_.b)) - Inherited from:
- Ordering
Given f, a function from T into S, creates an Ordering[T] whose compare function returns the result of this Ordering's compare function, if it is non-zero, or else a result equivalent to:
Given f, a function from T into S, creates an Ordering[T] whose compare function returns the result of this Ordering's compare function, if it is non-zero, or else a result equivalent to:
def compare[T, S: Ordering](x: T, y: T, f: T => S) = Ordering[S].compare(f(x), f(y))
This function is equivalent to passing the result of Ordering.by(f) to orElse.
Type parameters
- S
-
the type returned by the extraction function
f
Value parameters
- f
-
the function to extract a comparison key from a
Tvalue - ord
-
the implicit ordering for the extracted key type
S
Attributes
- Returns
-
an
Ordering[T]that uses this ordering first, falling back to comparing byfwhen values are equal - Example
-
case class Pair(a: Int, b: Int) val pairOrdering = Ordering.by[Pair, Int](_.a) .orElseBy[Int](_.b) - Inherited from:
- Ordering
Returns the opposite ordering of this one.
Returns the opposite ordering of this one.
Implementations overriding this method MUST override isReverseOf as well if they change the behavior at all (for example, caching does not require overriding it).
Attributes
- Returns
-
an
Ordering[T]that compares elements in the reverse order of this ordering - Definition Classes
-
Ordering -> PartialOrdering
- Inherited from:
- Ordering
Given a sequence of as, compute the sum.
Given a sequence of as, compute the sum.
Attributes
- Inherited from:
- AdditiveMonoid
Attributes
- Definition Classes
-
AdditiveMonoid -> AdditiveSemigroup
- Inherited from:
- AdditiveMonoid
Attributes
- Inherited from:
- Comparator
Attributes
- Inherited from:
- Comparator
Attributes
- Inherited from:
- Comparator
Attributes
- Inherited from:
- Comparator
Attributes
- Inherited from:
- Comparator
Attributes
- Inherited from:
- Comparator
Returns whether a comparison between x and y is defined, and if so the result of compare(x, y).
Returns whether a comparison between x and y is defined, and if so the result of compare(x, y).
Value parameters
- x
-
the first value to compare
- y
-
the second value to compare
Attributes
- Inherited from:
- Ordering
Given a sequence of as, combine them and return the total.
Given a sequence of as, combine them and return the total.
If the sequence is empty, returns None. Otherwise, returns Some(total).
Attributes
- Inherited from:
- MultiplicativeSemigroup
Given a sequence of as, combine them and return the total.
Given a sequence of as, combine them and return the total.
If the sequence is empty, returns None. Otherwise, returns Some(total).
Attributes
- Definition Classes
-
AdditiveMonoid -> AdditiveSemigroup
- Inherited from:
- AdditiveMonoid
Concrete fields
Represents the natural number one in Peano arithmetic.
Represents the natural number one in Peano arithmetic.
Attributes
- Returns
-
A value of type
Natrepresenting the successor of zero.
Implicits
Inherited implicits
This implicit method augments T with the comparison operators defined in scala.math.Ordering.Ops.
This implicit method augments T with the comparison operators defined in scala.math.Ordering.Ops.
Value parameters
- lhs
-
the value to enrich with ordering operators
Attributes
- Inherited from:
- Ordering