[Vienna-pm] Hausbackene Syntaxerweiterung mit Perl5?
Robert Barta
rho at devc.at
Wed Apr 30 08:21:33 PDT 2008
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. ;-/
\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
>
More information about the Vienna-pm
mailing list