develooper Front page | perl.perl6.language | Postings from April 2006

first barest-bones Relation implementation committed

From:
Darren Duncan
Date:
April 16, 2006 23:11
Subject:
first barest-bones Relation implementation committed
Message ID:
p06230900c068de8c5a72@[192.168.1.101]
All,

Following up with my recent on-#perl6 promises, I have started to 
implement a Perl 6 Relation class, in Pugs' ext/Relation/ directory.

It is conceptually similar to the Perl 6 Set class, but operates in 2 
main dimensions rather than 1.

This barest-bones version has 2 main attributes, a new() constructor 
submethod, and an export_to_hash() method which outputs what you 
input to the first.

It is not yet tested to compile or execute, but that will come soon, 
and it is visually more or less correct.

The next main tasks, feature-wise, are to add methods for relational 
algebra, plus some that loosely resemble SQL operators 
(insert/update/delete).

The next main tasks, implementation-wise, are to reimplement the 
attribute that stores the member tuples with a multi-dimensional 
hash, keyed on all the attributes, but I have to figure out the 
details first; meanwhile, it is an array of hashes.  Also note that 
the number of dimensions and their types would vary for each Relation 
object, so I can't pre-declare those in the class.

I should be continuing on this semi-daily, as I can afford time away 
from $work and other tasks.

Feedback is welcome, although you may be better off waiting until 
I've done "the next main tasks".

P.S.  Note that this "Relation" class has nothing to do with my 
"Rosetta" DBMS project, aside from their operating in similar problem 
domains.  The "Relation" is a proposal for a generally useful and 
simple-ish data type to include in Perl 6 itself, while "Rosetta" is 
a third-party toolkit for application building.

-- Darren Duncan



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About