=pod

=encoding utf8

=head1 NAME

Muldis::D::Ext::Interval -
Muldis D extension for Interval specific operators

=head1 VERSION

This document is Muldis::D::Ext::Interval version 0.96.1.

=head1 PREFACE

This document is part of the Muldis D language specification, whose root
document is L<Muldis::D>; 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<Muldis D core> or the I<core>; 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<Muldis D extensions>, are
non-mandatory and are defined in terms of the core or each other, but the
reverse isn't true.

This current C<Interval> document describes the system-defined I<Muldis D
Interval Extension>, which consists of generic operators that are specific
to the C<Interval> parameterized tuple type.  They can potentially be used
with values of any data type as long as said data type has a (total)
C<order-determination> function defined for it, and all system-defined
conceptually-ordered Muldis D scalar root types do.

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<Muldis::D::Core>.

I<This documentation is pending.>

I<Most functions that should be in the Interval Extension are pending.>

=head1 SYSTEM-DEFINED INTERVAL-CONCERNING FUNCTIONS

Each of these functions which has the parameter named C<func> is a wrapper
over the C<order-determination> function named in its C<func> argument when
the latter function is curried by a C<is_reverse_order> argument of
C<Bool:false>.  For any scalar root type's type-default order function, the
argument for C<func> is C<sys.std.Core.Scalar.order>.  Each C<func>
parameter is optional and defaults to C<sys.std.Core.Scalar.order> if no
explicit argument is given to it.

These functions' C<Interval>-typed arguments' C<min> and C<max> attribute
values must be of compatible declared types with the wrapped functions'
C<topic> and C<other> parameters; otherwise these functions will fail|warn
when the wrapped function would.  Likewise, any other argument values would
be compared to an interval's endpoints must be compatible with them.
Likewise, said attributes of any multiplicity of C<Interval>-typed
arguments must be mutually compatible.

=head2 sys.std.Interval.has_member

C<< function sys.std.Interval.has_member (Bool <-- $interval : Interval,
$value : Universal, $func? : OrdDetFuncRef) >>

This function results in C<Bool:true> iff its C<value> argument is included
within the interval defined by its C<interval> argument, and C<Bool:false>
otherwise.  That is, if conceptually the interval represents a set of
values, this function tests if C<value> is a member of C<interval>.  Note
that this operation is also known as C<I∋>.

=head2 sys.std.Interval.has_not_member

C<< function sys.std.Interval.has_not_member (Bool <--
$interval : Interval, $value : Universal, $func? : OrdDetFuncRef) >>

This function is exactly the same as C<sys.std.Interval.has_member> except
that it results in the opposite boolean value when given the same
arguments.  Note that this operation is also known as C<I∌>.

=head1 SEE ALSO

Go to L<Muldis::D> for the majority of distribution-internal
references, and L<Muldis::D::SeeAlso> for the majority of
distribution-external references.

=head1 AUTHOR

Darren Duncan (C<perl@DarrenDuncan.net>)

=head1 LICENSE AND COPYRIGHT

This file is part of the formal specification of the Muldis D language.

Muldis D is Copyright © 2002-2009, Muldis Data Systems, Inc.

See the LICENSE AND COPYRIGHT of L<Muldis::D> for details.

=head1 TRADEMARK POLICY

The TRADEMARK POLICY in L<Muldis::D> applies to this file too.

=head1 ACKNOWLEDGEMENTS

The ACKNOWLEDGEMENTS in L<Muldis::D> apply to this file too.

=cut
