In functional programming, continuation-passing style is a style of programming in which control is passed explicitly in the form of a continuation.
| Property | Value |
| dbpprop:abstract
|
- In functional programming, continuation-passing style is a style of programming in which control is passed explicitly in the form of a continuation.
- Unter Continuation-passing style (kurz CPS) versteht man einen Programmierstil, bei dem der Kontrollfluss ausschließlich durch den Aufruf von explizit an eine Funktion übergebenen Continuations gesteuert wird. An die Stelle der Funktionsrückkehr tritt bei Programmen im Continuation-Passing-Style der Aufruf der übergebenen Continuation. Im üblichen direct style geschieht die Übergabe der Continuation implizit, ist also für den Programmierer nicht sichtbar. CPS macht die Übergabe dieser Continuation explizit, eine Funktion die zum Aufrufer zurückkehren möchte kann die übergebene Continuation wie eine Prozedur aufrufen. Die Continuation stellt hier eine Art „GOTO mit Parametern“ dar. CPS macht den in vielen Sprachen notwendigen Stack für Rückkehradressen überflüssig. Damit ist es möglich, eine Programmiersprache stackless zu implementieren. Da auf vielen Systemen die Größe des Systemstacks hart begrenzt ist, wäre ohne CPS auch die maximale Rekursionstiefe begrenzt, was unter Umständen zum Problem werden kann. Mit CPS ist es möglich, diese Begrenzung zu umgehen. Ein Beispiel hierfür ist Stackless Python. Viele Compiler logischer und funktionaler Programmiersprachen verwenden CPS als interne Repräsentation eines Programmes, da er es erleichtert, Schlüsse über das Programm zu ziehen und damit Optimierungen vereinfacht. Eine direct-style-Sprache wie JavaScript in CPS zu transformieren führt dazu (sofern der Compiler keine Tail Call Optimization unterstützt), dass früher oder später der Stack überläuft, da eine durch Aufruf einer Continuation verlassene Funktion nicht über ihren „offiziellen“ Weg beendet wird und somit der Stackeintrag nicht abgeräumt wird. Wenn Exceptions verfügbar sind, ist es aber möglich, beim Erreichen einer bestimmten Rekursionstiefe die aktuelle Continuation in eine Exception zu packen und diese zu werfen. Das wickelt den Stack ab, und am oberen Ende der Kette von Funktionsaufrufen wartet ein Exceptionhandler, der die verpackte Continuation aufruft. Auf diese Weise implementiert beispielsweise flapjax eine CPS-Transformation von JavaScript-Code.
|
| dbpprop:hasPhotoCollection
| |
| rdfs:comment
|
- In functional programming, continuation-passing style is a style of programming in which control is passed explicitly in the form of a continuation.
- Unter Continuation-passing style (kurz CPS) versteht man einen Programmierstil, bei dem der Kontrollfluss ausschließlich durch den Aufruf von explizit an eine Funktion übergebenen Continuations gesteuert wird. An die Stelle der Funktionsrückkehr tritt bei Programmen im Continuation-Passing-Style der Aufruf der übergebenen Continuation. Im üblichen direct style geschieht die Übergabe der Continuation implizit, ist also für den Programmierer nicht sichtbar.
|
| rdfs:label
|
- Continuation-passing style
- Continuation-passing style
|
| owl:sameAs
| |
| skos:subject
| |
| foaf:page
| |
| is dbpprop:redirect
of | |