====== Continuations (hereafter, "Threads") ====== This describes continuations, or as we like to call them (rather confusingly), threads. Variables declared within a thread are local to the thread, but it inherits the scope of the caller when continued. Inspiration from this concept comes from forum posters. Declaring a thread: thread_name FIRST!! some_code_to_execute some_variable EDIT: code_to_execute_upon_continuation IBTL (Reference: forum posters on WoW boards, trying to be the first poster. IBTL == In Before The Lock, signifying that forum mods will likely close and lock the thread.) The 'EDIT:' keyword yields the value of the most recent statement to the calling routine. (Mnemonic: when you edit your thread post, you returned to the thread.) At IBTL, the thread yields the most recent statement. Interaction with data yielded from a thread is done via thread handles. Thread handles either act as the returned data in variable context, or as a thread handle in thread context. To create a thread handle (a new instance of a thread): HAY thread_handle! WUTZ GOIN ON IN thread_name THREAD? To continue a thread: I SEE WUT thread_handle DID THAR To force a thread to restart from the beginning: thread_handle BROKE TEH FORUMZ --- //Geordan Rosario (proxy for Eli Stevens, whose brainchild this really is), 2007/05/30 21:17// ---- Very confusing...why not just use threads for threading? I proposed this yesterday on [[hey-guys]]... --- //wohali, 2007/05/30 21:40// Another possible syntax for coroutines/continuations. I ARE TINYKITN BRB 1 BRB 2 BRB 3 WOOT 4 KTHXBAI LFG KITN NEED TINYKITN VISIBLE MOAR KITN PLZ VISIBLE MOAR KITN PLZ BTW and so on Here I ARE declares a function, BRB is yield and WOOT return. LFG...NEED declares a coroutine thread aka thread , and MOAR...PLZ continues it. The example is a coroutine that returns 4 values in sequence. --- //Zombie, 2007/05/31 08:18// Those are coroutines, not continuations. Continuations are points in the program to which you can jump -- like GOTO labels except that you can jump out of function calls (or back into them, if the implementation is up to it). Copied from a post I made on gamedev.net: BTW this program prints the numbers 10 to 20 HAI CAN HAS STDIO? I HAS A CONTINUATION BTW this is a function declaration SO IM LIKE COUNTING WITH START I HAS A COUNTER ITZ START MINUZ 1 BTW this creates a continuation object and assigns it to CONTINUATION BTW this assumes lexical scoping IM MAKING A TIME PARADOX WITH CONTINUATION UP COUNTER!!1 BTW this is a return statement I FOUND TEH COUNTER KTHX BTW this calls the above function I HAS A NUMBER ITZ COUNTING WITH 10 VISIBLE NUMBER IZ NUMBER LESS THAN 20 O RLY? YA RLY BTW this calls the continuation ZA WARUDO UR CONTINUATION KTHX KTHXBYE --- //Jon, 2007/05/31 08:48//