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

Reply via email to