Thread Gültigkeit von Variablen... oder so etwas. (30 answers)
Opened by theresa at 2008-02-18 13:44

KurtZ
 2008-02-21 16:46
#106183 #106183
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Struppi+2008-02-20 23:09:12--
Ich sprach von Lambda Closures, das sind Ketten von Funktionsaufrufen oder auf deutsch Zuständigkeitsketten, das ist doch sowas ähnliches wie ihr hier beschreibt.


so wie ich den Link verstehe (danke übrigens sehr interessant) bedeutet Lamda Closure nur das ein anonymes Sub in einer Closurevariablen gehalten wird, die Standardmethode von Perl um Routinen zu lokalisieren.

Um CPS-Konstrukte in Perl zu implementieren braucht man wohl die gleiche Technik... AFAIK.

Das gezeigte Beispiel ist aber zu CPS conträr, schließlich wird mit jedem Listenelement eine weitere Rekursionstiefe erzeugt, CPS will aber den Stack schonen und den Code durch Nutzung der Register beschleunigen.

sowas wie (ungestestet)
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
{
  @code_refs=();
 
  sub add_cr {
     push @code_refs, shift ;
  }

  sub  run_cr {
     for my $cr (@code_refs) {
         $cr->(@_);
     }
  }
}


sollte übrigens auch den gleichen Effekt haben wie das Lamda Closure Beispiel ohne den Stack so sehr zu belasten. Wen ich sowas mal bräuchte würde ichs aber wohl Q&D mit EVAL realisieren.

Zurück zu CPS, was ich im Netz gefunden habe ist ziemlich widersprüchlich, naja warum sollte da nicht ein ähnliches Sprachwirrwar herrschen wie bei OOP. Jeder pickt sich da was anderes heraus.

Was mich fasziniert ist das dieses Konstrukt erlaubt GOTOs lesbar und wartbar zu machen und bei zeitkristischen Anwendung überzeugen dürfte.

Habe Implementierungsbeispiele für JS Rhino gesehen, AFAIS ließe sich sowas auch in einem Perl-Modul anbieten.

Was ich bisher noch nicht so gesehen habe sind aber Anwendungsbeispiele, deren Probleme in CPS einfacher und intuitiver zu modellieren sind als mit klassischen Mitteln.

Mir fallen wie gesagt nur Statemachines ein.
TMTOWTDYOG (there's more than one way to dig your own grave)

View full thread Gültigkeit von Variablen... oder so etwas.