[linux-l] Ocml vs. Java

Oliver Bandel oliver at first.in-berlin.de
Mo Sep 26 12:40:39 CEST 2005


On Sun, Sep 25, 2005 at 07:57:27PM +0200, Volker Grabsch wrote:
> On Sat, Sep 24, 2005 at 02:45:40AM +0200, Oliver Bandel wrote:
[...]
> Nur mal des Interesses halber: Wie würdest du folgendes Problem in Ocaml
> angehen? Du willst eine Funktion "list_file". Sie bekommt als Parameter
> eine Datei (genauer: irgendeinen Stream, den man zeilenweise durchlaufen
> kann), und liefert einen Iterator zurück. Diesen Iterator soll man
> "aufheben" können, d.h. der Iterator soll zwischendurch auch wirklich
> als einzelnes Objekt (bzw. Funktion) dastehen. Wenn man ihn später
> durchläuft, iteriert er alle Zeilen der Datei, entfernt das Newline und
> "trailing spaces", und setzt ein "XXX: " davor.

Sowas kann man doch klassisch imperativ machen, indem man eine
Funktion hat, die eine Zeile einliest, trailing garbage weg schmeisst und
den Rest ausgibt, und das "XXX: " davor setzt.
Das ist doch etwas, das man in plain C machen kann oder jeder anderen
üblichen Sprache auch.

Wozu muß man das als Iterator machen?

Oder warum sollte man es so machen?




> Einzige Bedingung: Keine
> Listen! Das heißt, die Datei wird wirklich erst dann iteriert, wenn die
> zurückgegebene Iterator aufgerufen wird.

Und das Ergbnis wird dann sofort ausgegeben?

Da könnte man in C z.B. die Standard-Funktionen nehmen.
In OCaml entsprechende Pendants.
Warum in Python nicht?

Was spricht statt ein Objekt zu nehmen oder einen Iterator
zu bauen, dagegen, eine ganz normale Funktion zu nehmen?

Ein offener Filedeskriptor bzw. Filestream sorgt doch von sich aus
schon dafür, daß sequentiell gelesen wird.

Ich weiß nicht, wieso man das mit Iterator machen sollte;
das Lesen vom File entspricht doch schon einem.


Ciao,
   Oliver



Mehr Informationen über die Mailingliste linux-l