[linux-l] Ocml vs. Java

Oliver Bandel oliver at first.in-berlin.de
Do Okt 20 09:52:52 CEST 2005


On Wed, Oct 19, 2005 at 05:28:09PM +0200, Volker Grabsch wrote:
> On Sun, Oct 02, 2005 at 03:01:09PM +0200, Oliver Bandel wrote:
> > > > Was spricht statt ein Objekt zu nehmen oder einen Iterator
> > > > zu bauen, dagegen, eine ganz normale Funktion zu nehmen?
> > > 
> > > Weil es später als Argument weitergereicht und in andere Strukturen
> > > eingebaut werden soll. Ich zeig dir bei Gelegenheit einfach mal, wie
> > > meine Applikation Daten exportiert. (z.B. für's Drucken)
> > 
> > In Funktionalen Sprachen gibt man Funktionen weiter, wie andere
> > Variablen auch.
> > Das ist ja der Vorteil funktionaler Sprachen. :)
> 
> Diese ineffiziente Art, erstmal Listen aufzubauen, um sie von der
> aufrufenden Funktion dann doch wieder nur ablaufen zu lassen, ist
> vielleicht ja doch ganz okay, wenn der Compiler dafür sorgt, dass
> intern gar keine Liste aufgebaut wird, sondern eben Iteratoren
> herhalten. Das wäre eine schöne Optimierung durch "lazy evaluation",
> aber inwiefern das wirklich gemacht wird, weiß ich nicht.

Wenn man Listen braucht/haben will, nimmt man Listen.
Ansonsten eben nicht.

ich arbeite grene mit Datenstrukturen.
Sind die einmal erstellt, dann kann ich die weiter reichen
und lasse ggf. mehrere Funktionen über die selbe
Liste laufen (z.B. aus einer datenstruktur mehrere
Ausgabeformate erzeugen).

Und wenn man das anders machen will, macht man es eben anders.

> 
> In Python sage ich einfach gleich, dass ich bloß nen Iterator will
> und keine Liste, und die Iterator-Generatoren sorgen dafür, dass
> ich syntaktisch fast dasselbe schreibe, als wenn ich Listen mit Werten
> fülle. Von daher ist dort die oben beschriebene "Optimierung" schon
> explizit eingebaut, und ich kann sie völlig ohne syntaktischen Overhead
> direkt nutzen. Deshalb mag ich das so. :-)
> 
> Aber vielleicht bietet Ocaml ja auch was ähnliches. Ich könnte es mir
> gut vorstellen. Das werd ich dann sehen, wenn ich mich näher damit
> beschäftige.

Streams sind da IMHO wohl das entsprechende Äquivalent.

Ciao,
   Oliver



Mehr Informationen über die Mailingliste linux-l