Posted to tcl by dgp at Fri Aug 13 16:38:55 GMT 2010view raw

  1.  
  2. % coroutine make apply {{} {
  3. yield
  4. set l {1 2 3}
  5. foreach e $l {
  6. take $e
  7. }
  8. return -code error done
  9. }}
  10. % coroutine take apply {{} {
  11. while {[catch make val] == 0} {
  12. puts $val
  13. }
  14. puts ERROR:$val
  15. }}
  16. ERROR:coroutine "take" is already running
  17. % set errorInfo
  18. coroutine "take" is already running
  19. while executing
  20. "take $e"
  21. (lambda term "{} {
  22. yield
  23. set l {1 2 3}
  24. foreach e $l {
  25. ..." line 5)
  26. invoked from within
  27. "apply {{} {
  28. yield
  29. set l {1 2 3}
  30. foreach e $l {
  31. take $e
  32. }
  33. return -code error done
  34. }}"
  35. invoked from within
  36. "make"
  37.