Greetings,
I am pleased to announce that version 0.135.0 of the specification of the Muldis
D language, for object-relational databases, has been released on CPAN.
http://search.cpan.org/dist/Muldis-D/
This release features a cleanup/consolidation of the postcircumfix operator
syntaxes, and a renaming of the sub/superset infix ops.
1. In Types.pod, added new mixin type "Attributive" that is intended to be
explicitly composed by other types that are considered to be collections of
named attributes, such as generic tuples and relations. Also updated the 2
types "Tuple", "Relation" to compose "Attributive". (A "mixin type" is
analogous to a Perl "role".)
2. Added new file lib/Muldis/D/Core/Attributive.pod, with an initial complement
of 8 new virtual functions ["degree", "is_[|not_]nullary", "has_attrs",
"attr_names", "rename", "projection", "cmpl_proj", "static_exten",
"[|cmpl_|un]wrap"] and 4 new virtual updaters ["assign_rename",
"assign_static_exten", "assign_projection", "assign_cmpl_proj"]. Then in each
of Tuple.pod and Relation.pod, updated the 12 same-named routines so that they
explicitly implement the same-named new virtuals.
3. For each of the 6 functions ["rename", "projection", "cmpl_proj",
"[|cmpl_|un]wrap"], merged the pair of tuple|relation-specific formats of its
postcircumfix syntax into a single format that works for both types; the
postcircumfix syntax will now invoke the 6 virtual functions rather than their
12 implementers. For example, we used to have "%{%<-}","@{%<-}" and we now have
"{%<-}".
And so, projection now looks exactly like it does in Tutorial D, I think, like
this, overloaded for both generic relation and tuple valued expressions:
tab1{col1,col2}
... that meaning:
SELECT DISTINCT col1, col2 FROM tab1
... and previously I had it look like this:
t...@{col1,col2} # relation #
row1%{col1,col2} # tuple #
The new version also looks like a Perl hash slice, appropriate for use with a
tuple. Or the revised syntax for tuple attribute extraction looks like a Perl
hash attribute extraction (the "." is allowed in Perl 6):
person.{name}
... although you can also and may prefer to spell it this way:
person.name
4. Renamed all remaining postcircumfix op variants that had a [$,%,@] sigil
preceding the opening curly brace so to remove that sigil. All "${...}" were
renamed to "{;...}", the ".{}" (Just) was renamed to ".{*}", and any other
renames simply removed the sigils, such as "group", "cmpl_group", "ungroup", etc.
5. Renamed the ASCII variants of all 8 dyadic infix subset/superset operators
so that they now are symbolic in appearance rather than alphabetic. For
examples, "⊆" is now mapped to "{<=}", not "sub", and "⊅" is now mapped to
"{!>}", not "!psuper".
Still todo, stuff like generifying the set/relation/etc membership tests ∈ and
such, using another mixin type.
Good day. -- Darren Duncan
_______________________________________________
muldis-db-users mailing list
muldis-db-users@mm.darrenduncan.net
http://mm.darrenduncan.net/mailman/listinfo/muldis-db-users