Thread Gültigkeit von Variablen... oder so etwas.
(30 answers)
Opened by theresa at 2008-02-18 13:44 Struppi+2008-02-20 23:09:12-- 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)
|