=pod

=encoding utf8

=head1 NAME

Muldis::D::Core::Interval -
Muldis D generic interval operators

=head1 VERSION

This document is Muldis::D::Core::Interval version 0.132.0.

=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.  Moreover, you
should read the L<Muldis::D::Core> document before this current
document, as that forms its own tree beneath a root document branch.

=head1 DESCRIPTION

This document describes essentially all of the core Muldis D generic
interval operators, for the canonical interval types that are tuple or
relation types with specific nonscalar headings.  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.

I<This documentation is pending.>

I<Most functions that should be in this document are pending.>

=head1 GENERIC RELATIONAL FUNCTIONS FOR INTERVALS

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 an 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.Ordered.order>.  Each C<func>
parameter is optional and defaults to C<sys.std.Core.Ordered.order> if no
explicit argument is given to it.

These functions' C<SPInterval>-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<SPInterval>-typed
arguments must be mutually compatible.

=head2 sys.std.Core.Interval.has_member

C<< function has_member (Bool <--
interval : SPInterval, value : Universal, func? : OrdDetCFuncNC) {...} >>

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∋> or C<i-has>.

=head2 sys.std.Core.Interval.has_not_member

C<< function has_not_member (Bool <--
interval : SPInterval, value : Universal, func? : OrdDetCFuncNC) {...} >>

This function is exactly the same as C<sys.std.Core.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∌> or C<i-!has> or
C<i-not-has>.

=head2 sys.std.Core.Interval.value_is_member

C<< function value_is_member (Bool <--
value : Universal, interval : SPInterval, func? : OrdDetCFuncNC) {...} >>

This function is an alias for C<sys.std.Core.Interval.has_member>.  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> or C<in-i> or C<between>.

=head2 sys.std.Core.Interval.value_is_not_member

C<< function value_is_not_member (Bool <--
value : Universal, interval : SPInterval, func? : OrdDetCFuncNC) {...} >>

This function is an alias for C<sys.std.Core.Interval.has_not_member>.
This function is exactly the same as
C<sys.std.Core.Interval.value_is_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> or C<!in-i> or C<not-in-i>
or C<!between> or C<not-between>.

=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<darren@DarrenDuncan.net>)

=head1 LICENSE AND COPYRIGHT

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

Muldis D is Copyright © 2002-2010, 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
