=pod =encoding utf8 =head1 NAME Muldis::D::Core::Attributive - Muldis D generic attributive operators =head1 VERSION This document is Muldis::D::Core::Attributive version 0.148.0. =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. Moreover, you should read the L 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 operators that types composed of named attributes would have. In particular, all the virtual operators that tuples and relations implement. I =head1 VIRTUAL FUNCTIONS FOR THE ATTRIBUTIVE MIXIN TYPE =head2 sys.std.Core.Attributive.degree C<< function degree (NNInt <-- topic@ : Attributive) {...} >> This virtual function results in the degree of its argument (that is, the count of attributes it has). =head2 sys.std.Core.Attributive.is_nullary C<< function is_nullary (Bool <-- topic@ : Attributive) {...} >> This virtual function results in C iff its argument has a degree of zero (that is, it has zero attributes), and C otherwise. =head2 sys.std.Core.Attributive.is_not_nullary C<< function is_not_nullary (Bool <-- topic@ : Attributive) {...} >> This virtual function is exactly the same as C except that it results in the opposite boolean value when given the same argument. =head2 sys.std.Core.Attributive.has_attrs C<< function has_attrs (Bool <-- topic@ : Attributive, attr_names : set_of.Name) {...} >> This virtual function results in C iff, for every one of the attribute names specified by its C argument, its C argument has an attribute with that name; otherwise it results in C. As a trivial case, this function's result is C if C is empty. =head2 sys.std.Core.Attributive.attr_names C<< function attr_names (set_of.Name <-- topic@ : Attributive) {...} >> This virtual function results in the set of the names of the attributes of its argument. =head2 sys.std.Core.Attributive.rename C<< function rename (Attributive <-- topic@ : Attributive, map : AttrRenameMap) {...} >> I Note that this operation is also known as C<< {<-} >>. =head2 sys.std.Core.Attributive.projection C<< function projection (Attributive <-- topic@ : Attributive, attr_names : set_of.Name) {...} >> I Note that this operation is also known as C<{}>. =head2 sys.std.Core.Attributive.cmpl_proj C<< function cmpl_proj (Attributive <-- topic@ : Attributive, attr_names : set_of.Name) {...} >> I Note that this operation is also known as C<{!}>. =head2 sys.std.Core.Attributive.static_exten C<< function static_exten (Attributive <-- topic@ : Attributive, attrs : Tuple) {...} >> I =head2 sys.std.Core.Attributive.wrap C<< function wrap (Attributive <-- topic@ : Attributive, outer : Name, inner : set_of.Name) {...} >> I Note that this operation is also known as C<< {%<-} >>. =head2 sys.std.Core.Attributive.cmpl_wrap C<< function cmpl_wrap (Attributive <-- topic@ : Attributive, outer : Name, cmpl_inner : set_of.Name) {...} >> I Note that this operation is also known as C<< {%<-!} >>. =head2 sys.std.Core.Attributive.unwrap C<< function unwrap (Attributive <-- topic@ : Attributive, inner : set_of.Name, outer : Name) {...} >> I Note that this operation is also known as C<< {<-%} >>. =head1 VIRTUAL UPDATERS FOR THE ATTRIBUTIVE MIXIN TYPE =head1 Updaters That Rename Attributes =head2 sys.std.Core.Attributive.assign_rename C This virtual update operator is a short-hand for first invoking the C function with the same arguments, and then assigning the result of that function to C. =head1 Updaters That Add Attributes =head2 sys.std.Core.Attributive.assign_static_exten C This virtual update operator is a short-hand for first invoking the C function with the same arguments, and then assigning the result of that function to C. =head1 Updaters That Remove Attributes =head2 sys.std.Core.Attributive.assign_projection C This virtual update operator is a short-hand for first invoking the C function with the same arguments, and then assigning the result of that function to C. =head2 sys.std.Core.Attributive.assign_cmpl_proj C This virtual update operator is a short-hand for first invoking the C function with the same arguments, and then assigning the result of that function to C. =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-2011, Muldis Data Systems, Inc. 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