[Vienna-pm] Hausbackene Syntaxerweiterung mit Perl5?

Robert Barta rho at devc.at
Wed Apr 30 08:31:48 PDT 2008


On Wed, Apr 30, 2008 at 05:21:33PM +0200, Robert Barta wrote:
> On Wed, Apr 30, 2008 at 04:26:19PM +0200, Roland Giersig wrote:
> > 
> > und wie schaut das aus?
> > 
> > @cleverlies = select {$_->{matrikelnr}} where {$_->{marks} > 85} from 
> > @students;
> > 
> > extra bonuspunkte für diejenigen, die jetzt lachend am boden liegen, 
> > weil sie die implementation von select, where und from schon vor augen 
> > haben... ;o)
> 
> Ja. Lustig. ;-/

Fuer alle, die lustig aus der Huefte schiessen: Es geht um diese
Liste von Operatoren:

  http://download.microsoft.com/download/5/8/6/5868081c-68aa-40de-9a45-a3803d8134b8/standard_query_operators.doc

\rho

> > Robert Barta wrote:
> > > On Wed, Apr 30, 2008 at 12:02:52PM +0200, Roland Giersig wrote:
> > >> Oder das alles nur per SQL abhandeln, mit DBI und einer in-memory SQLite 
> > >> DB im Hintergrund.
> > > 
> > > Um SQL geht's eigentlich nicht...
> > > 
> > >> Der Punkt ist: für wen sind diese Syntax-Überlegungen? Für einen 
> > >> Maintainer, der mehr SQL als Perl versteht?
> > > 
> > > ... sondern um einen Weg (persistente) Collections ueber _ein und
> > > denselben_ Mechanismus anzusprechen. D.h. bei
> > > 
> > >   @collection = from $s in @students .....
> > > 
> > > ist es fuer den Programmierer egal, ob die Studis aus einer SQL
> > > Datenkrank, aus dem memory oder einem XML Dokument, oder einem RDF
> > > Graphen geholt werden.
> > > 
> > >> Dem tust du keinen Gefallen, 
> > >> wenn du ihm SQL-ishe Perl-Syntax bietest, die dann doch nicht genau SQL 
> > >> ist. Da bist du besser dran, wenn du ihm einen Vereinfachungs-Wrapper um 
> > >> DBI schreibst, sodass die Operationen echtes SQL sind.
> > > 
> > > Right. Aber fuer das gibt's ja schon nen Haufen.
> > > 
> > > \rho
> > > 
> > >> Robert Barta wrote:
> > >>> On Wed, Apr 30, 2008 at 08:20:23AM +0200, Thomas Klausner wrote:
> > >>>>> auf in-memory Objekte, relational DBs, XML structures, und - das
> > >>>>> interessiert mich hier hauptsaechlich - auf Topic Map und RDF KBs
> > >>>>> zugreifen kann. LINQ ist nun Teil von C# (das langsam Perl6 immer
> > >>>>> aehnlicher wird, naja langsam).
> > >>>> Naja, in Perl ist dieser Zugriffsmechanismus halt map, grep, each, etc, 
> > >>>> mit dem man auf in-memory Objekte, DBs, XML, ... zugreift.
> > >>> D.h., ich koennte das 1) einmal sehr Perl-ish angehen und etwas an
> > >>>
> > >>>    Tie::Array
> > >>>
> > >>> binden. Oder ...
> > >>>
> > >>>> In deinem konkreten Fall:
> > >>>>
> > >>>>>   my @students = ....;
> > >>>>>   my @cleverlies = from $s in @students
> > >>>>>                    where $s->{marks} > 85
> > >>>>>                    select $s->{matrikelnr};
> > >>>> koenntest du schon eine sub from { } machen, die die Parameterliste 
> > >>>> durchgeht, andere "keywords" wie 'where' und 'select' identifziert, 
> > >>> .... 2) 'from' in the namespace laden, oder ....
> > >>>
> > >>>> From: Stefan Weiss <spaceman at foo.at>
> > >>>> Um deinen Sourcecode so umzuschreiben, dass nachher Perl rauskommt,
> > >>>> schau dir mal die Source Filter in "perldoc perlfilter" an, oder das
> > >>>> Modul Filter::Simple.
> > >>> .... 3) ein Praeprozessor einschieben.
> > >>>
> > >>> Klingt alles gangbar. Ich haette auch nicht notfalls vor
> > >>>
> > >>>   @collection = new LINQ::TM ('from ...');
> > >>>
> > >>> zurueckgeschreckt.
> > >>>
> > >>> <loud-thinking>
> > >>> 3) Bei preprocessors habe ich immer das Problem, dass sie nicht
> > >>>    leicht immer miteinander kombinierbar sind.
> > >>>
> > >>> 2) mit dem 'from' als Routine muss man analysieren, ob die Parameterliste
> > >>>    mit der Syntax, die ich erreichen will, halbwegs kompatibel ist. Bei
> > >>>
> > >>>      $s->{marks} > 85
> > >>>
> > >>>    hab ich schon das Problem, dass Perl das fuer mich auswerten will, bevor
> > >>>    'from' zum Zug kommt.
> > >>>
> > >>> 1) Tie::Array ist halt SEHR perl-ish. Not bad per se, aber nicht Sinn der
> > >>>    Uebung hier.
> > >>>
> > >>> </loud-thinking>
> > >>>
> > >>> \rho
> > >>>
> > >>> _______________________________________________
> > >>> Vienna-pm mailing list
> > >>> Vienna-pm at pm.org
> > >>> http://mail.pm.org/mailman/listinfo/vienna-pm
> > >>>
> > >> _______________________________________________
> > >> Vienna-pm mailing list
> > >> Vienna-pm at pm.org
> > >> http://mail.pm.org/mailman/listinfo/vienna-pm
> > >>
> > > 
> > _______________________________________________
> > Vienna-pm mailing list
> > Vienna-pm at pm.org
> > http://mail.pm.org/mailman/listinfo/vienna-pm
> > 
> _______________________________________________
> Vienna-pm mailing list
> Vienna-pm at pm.org
> http://mail.pm.org/mailman/listinfo/vienna-pm
> 


More information about the Vienna-pm mailing list