Delimited continuation (original) (raw)
In programming languages, a delimited continuation, composable continuation or partial continuation, is a "slice" of a continuation frame that has been reified into a function. Unlike regular continuations, delimited continuations return a value, and thus may be reused and composed. Control delimiters, the basis of delimited continuations, were introduced by Matthias Felleisen in 1988 though early allusions to composable and delimited continuations can be found in Carolyn Talcott's Stanford 1984 dissertation, Felleisen and Friedman's PARL 1987 paper, and Felleisen's 1987 dissertation.
Property | Value |
---|---|
dbo:abstract | Στις γλώσσες προγραμματισμού, μια συντιθέμενη συνέχεια (composable continuation), φραγμένη συνέχεια (delimited continuation) ή μερική συνέχεια (partial continuation), είναι ένα τμήμα του πλαισίου στοίβας των συνεχειών που έχει γίνει η επαναφορά του (reification) σε μια συνάρτηση. Σε αντίθεση με τις κανονικές συνέχειες, οι φραγμένες συνέχειες επιστρέφουν τιμή και επομένως μπορούν να ξαναχρησιμοποιηθούν και να συντεθούν ως συναρτήσεις. Οι φραγμένες συνέχειες μπορούν να υλοποιηθούν με δυο τελεστές, τον shift και τον reset. Ο reset θέτει το όριο που φράσσει τη συνέχεια. Ο shift παίρνει μια συνάρτηση και της περνά τη φραγμένη συνέχεια. Όταν η φραγμένη συνέχεια κληθεί, ο υπολογισμός διακόπτεται και μια τιμή επιστρέφεται από τον shift. Όταν ολόκληρος ο υπολογισμός μέσα στον reset τελειώσει, το αποτέλεσμα επιστρέφεται από τη φραγμένη συνέχεια. Για παράδειγμα, στον παρακάτω κώδικα σε Scheme: (reset (* 2 (shift k CODE))) όταν η CODE καλεί την (k N), αποτιμάται και επιστρέφεται το (* 2 N). Επιπλέον, όταν όλος ο υπολογισμός μέσα στον shift ολοκληρωθεί, η συνέχεια δε χρησιμοποιείται πια, και η εκτέλεση αρχίζει πάλι εκτός του reset. Επομένως ο, (reset (* 2 (shift k (k (k 4))))) καλεί την (k 4) πρώτα (που επιστρέφει 8), και μετά την (k 8) (που επιστρέφει 16). Σε αυτό το σημείο, η έκφραση shift έχει τελειώσει την εκτέλεσή της και η υπόλοιπη έκφραση reset αγνοείται για το υπόλοιπο του προγράμματος. Το τελικό αποτέλεσμα είναι 16. Οτιδήποτε συμβαίνει εκτός της έκφρασης reset είναι κρυμμένο. Για παράδειγμα ο ακόλουθος κώδικας επιστρέφει 17: (+ 1 (reset (* 2 (shift k (k (k 4)))))) Οι φραγμένες συνέχειες είχαν αρχικά περιγραφεί από τους Felleisen et al. και Johnson. Από τότε έχουν χρησιμοποιηθεί σε πολλά πεδία, ειδικότερα στον ορισμό νέων τελεστών ροής ελέγχου, βλ. Queinnec για μια έρευνα στο αντικείμενο. Οι φραγμένες συνέχειες είναι επίσης χρήσιμες στη γλωσσολογία: δείτε το άρθρο Συνέχεια για λεπτομέρειες. (el) In programming languages, a delimited continuation, composable continuation or partial continuation, is a "slice" of a continuation frame that has been reified into a function. Unlike regular continuations, delimited continuations return a value, and thus may be reused and composed. Control delimiters, the basis of delimited continuations, were introduced by Matthias Felleisen in 1988 though early allusions to composable and delimited continuations can be found in Carolyn Talcott's Stanford 1984 dissertation, Felleisen and Friedman's PARL 1987 paper, and Felleisen's 1987 dissertation. (en) |
dbo:wikiPageExternalLink | http://axisofeval.blogspot.com/2011/07/some-nice-paperz.html http://community.schemewiki.org/%3Fcomposable-continuations-tutorial http://okmij.org/ftp/continuations/ZFS/context-OS.pdf http://okmij.org/ftp/continuations/implementations.html https://archive.today/20121205215033/http:/palm-mute.livejournal.com/12291.html |
dbo:wikiPageID | 12083997 (xsd:integer) |
dbo:wikiPageLength | 12043 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1098961923 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:Carolyn_Talcott dbr:Scheme_(programming_language) dbr:Matthias_Felleisen dbr:Function_(computer_science) dbr:Continuation dbr:Control_flow dbc:Continuations dbr:Stack_frame dbc:Articles_with_example_Racket_code dbr:Function_composition_(computer_science) dbr:Linguistics dbr:Reification_(computer_science) dbr:Return_statement dbc:Control_flow dbr:John_C._Reynolds dbr:J_operator dbr:ISWIM dbr:Programming_language dbr:Continuations |
dbp:wikiPageUsesTemplate | dbt:In_lang dbt:Reflist dbt:Why? |
dct:subject | dbc:Continuations dbc:Articles_with_example_Racket_code dbc:Control_flow |
rdf:type | yago:WikicatContinuations yago:Abstraction100002137 yago:Act100030358 yago:Activity100407535 yago:Continuance101017987 yago:Event100029378 yago:PsychologicalFeature100023100 yago:YagoPermanentlyLocatedEntity |
rdfs:comment | In programming languages, a delimited continuation, composable continuation or partial continuation, is a "slice" of a continuation frame that has been reified into a function. Unlike regular continuations, delimited continuations return a value, and thus may be reused and composed. Control delimiters, the basis of delimited continuations, were introduced by Matthias Felleisen in 1988 though early allusions to composable and delimited continuations can be found in Carolyn Talcott's Stanford 1984 dissertation, Felleisen and Friedman's PARL 1987 paper, and Felleisen's 1987 dissertation. (en) Στις γλώσσες προγραμματισμού, μια συντιθέμενη συνέχεια (composable continuation), φραγμένη συνέχεια (delimited continuation) ή μερική συνέχεια (partial continuation), είναι ένα τμήμα του πλαισίου στοίβας των συνεχειών που έχει γίνει η επαναφορά του (reification) σε μια συνάρτηση. Σε αντίθεση με τις κανονικές συνέχειες, οι φραγμένες συνέχειες επιστρέφουν τιμή και επομένως μπορούν να ξαναχρησιμοποιηθούν και να συντεθούν ως συναρτήσεις. (reset (* 2 (shift k CODE))) όταν η CODE καλεί την (k N), αποτιμάται και επιστρέφεται το (* 2 N). (reset (* 2 (shift k (k (k 4))))) (el) |
rdfs:label | Φραγμένη συνέχεια (el) Delimited continuation (en) |
owl:sameAs | freebase:Delimited continuation yago-res:Delimited continuation wikidata:Delimited continuation dbpedia-el:Delimited continuation https://global.dbpedia.org/id/4jCeZ |
prov:wasDerivedFrom | wikipedia-en:Delimited_continuation?oldid=1098961923&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Delimited_continuation |
is dbo:wikiPageRedirects of | dbr:Partial_continuation dbr:Composable_continuation dbr:Delimited_continuations dbr:Shift-reset dbr:Shift/reset dbr:Shift_and_reset |
is dbo:wikiPageWikiLink of | dbr:Scala_(programming_language) dbr:Matthias_Felleisen dbr:GNU_Guile dbr:Monad_(functional_programming) dbr:Continuation dbr:Call-with-current-continuation dbr:Racket_(programming_language) dbr:Partial_continuation dbr:Composable_continuation dbr:Delimited_continuations dbr:Shift-reset dbr:Shift/reset dbr:Shift_and_reset |
is foaf:primaryTopic of | wikipedia-en:Delimited_continuation |