View · Search · Index
No registered users in community xowiki
in last 10 minutes

Re: [Xotcl] coroutines

From: Gustaf Neumann <neumann_at_wu-wien.ac.at>
Date: Tue, 28 Sep 2010 11:49:06 +0200

  On 02.09.10 07:28, Victor Mayevski wrote:
> I am wondering if it will be possible to somehow implement coroutines in XOTcl? Is it feasible? Would it be worth it?
Sorry for the late answer. With XOTcl 1.6.* there is no
special support
for coroutines (one can certainly create Tcl-coroutines and
use it).

With 2.0 one can write object oriented coroutines.
The new regression test contains already the classical
number generator
example based on coroutines (see below).

-gustaf neumann

=========================================================
Test case number-generator {

   Object create numbers {

     # set instance variable used in coroutine
     set :delta 2

     :public method ++ {} {
       yield
       set i 0
       while 1 {
         yield $i
         incr i ${:delta}
       }
     }
   }

   # create coroutine
   coroutine nextNumber numbers ++
   set ::j 0

   # use coroutine
   for {set i 0} {$i < 10} {incr i} {
     incr ::j [nextNumber]
   }

   # remove coroutine
   rename nextNumber {}

   ? {set ::j} 90
}