=pod =encoding utf8 =head1 NAME Muldis::D::Ext::Ordered - Muldis D extension for generic ordered-sensitive operators =head1 VERSION This document is Muldis::D::Ext::Ordered version 0.22.1. =head1 PREFACE This document is part of the Muldis D language specification, whose root document is L; you should read that root document before you read this one, which provides subservient details. =head1 DESCRIPTION Muldis D has a mandatory core set of system-defined (eternally available) entities, which is referred to as the I or the I; they are the minimal entities that all Muldis D implementations need to provide; they are mutually self-describing and are used to bootstrap the language; any entities outside the core, called I, are non-mandatory and are defined in terms of the core or each other, but the reverse isn't true. This current C document describes the system-defined I, which consists of generic operators that are sensitive to an ordering of a type's values, and are used for such things as list sorting or quota queries or determining before/after/min/max/between/etc. They can potentially be used with values of any data type as long as said data type is either inherently ordered or or has an order-determination operator defined for them. This current document does not describe the polymorphic operators that all types, or some types including core types, have defined over them; said operators are defined once for all types in L. I =head1 SYSTEM-DEFINED ORDER-CONCERNING FUNCTIONS These functions are applicable to values of potentially any data type, those which have a C or such function defined for them. They provide a common syntax for sort-related functionality, though technically every type having these functions is re-implementing its own version. If values of an ordered data type can conceivably be sorted using multiple criteria (such as different text collations), then these functions just represent the default criteria; any additional criteria are represented by additional functions declared for just the types they apply to. =over =item C This function results in C iff its 2 arguments are non-identical and the value of the C argument is considered to come before the value of the C argument when the 2 values are arranged in order (as defined by the type); it results in C otherwise. This function's arguments must be of compatible declared types; in this case, 2 declared types are compatible iff they are both subtypes of a common scalar type that declares a C function for itself. Note that C is considered the only fundamental ordered-specific operator, and all others are defined over it plus C. =item C This function is exactly the same as C except that it results in the opposite boolean value when given the same arguments. (It could alternately be called "is after or is identical".) =item C This function results in C iff its C argument is within the range whose bounds are defined by its C and C arguments. If C or C are C, then C is considered to be within the range if it is equal to C or C, respectively; otherwise, C is not considered to be within the range if it is equal to C or C. This function's arguments must be of compatible declared types as per C. This function will fail if C is before C. =item C This function is exactly the same as C except that it results in the opposite boolean value when given the same arguments. =item C This function is a reduction operator that recursively takes each pair of its N input element values and picks the minimum of the 2 (a process which is both commutative and associative) until just one is left, which is the function's result. If C has zero values, then C results in the result type's concept of positive infinity, which is the identity value for I. This function will fail on a C of zero values if the result type's concept of positive infinity is impossible or impractically large to represent, such as with the infinite C type. =item C This function is exactly the same as C except that it results in the maximum input element value rather than the minimum one, and its identity value is the result type's concept of negative infinity. =item C This function is exactly the same as C except that it results in a C of what is otherwise the result type, and that result has zero elements if the argument has zero elements. =item C This function is to C as C is to C. =back =head1 SEE ALSO Go to L for the majority of distribution-internal references, and L for the majority of distribution-external references. =head1 AUTHOR Darren Duncan (C) =head1 LICENSE AND COPYRIGHT This file is part of the formal specification of the Muldis D language. Muldis D is Copyright © 2002-2008, Darren Duncan. See the LICENSE AND COPYRIGHT of L for details. =head1 TRADEMARK POLICY The TRADEMARK POLICY in L applies to this file too. =head1 ACKNOWLEDGEMENTS The ACKNOWLEDGEMENTS in L apply to this file too. =cut