Posted to tcl by pooryorick at Wed Apr 20 13:51:28 GMT 2016view raw

  1. #! /bin/env tclsh
  2.  
  3. proc r {} {
  4. set name [info cmdcount]
  5. namespace eval $name {
  6. namespace export *
  7. namespace ensemble create
  8.  
  9. proc finalize {id} {
  10. }
  11.  
  12. proc initialize {id spec} {
  13. return {finalize initialize read watch}
  14. }
  15.  
  16. proc read {id count} {
  17. after 0 [list after idle [list [info coroutine]]]
  18. yield
  19. return hello\n
  20. }
  21.  
  22. proc watch {id spec} {
  23. }
  24. }
  25. return $name
  26. }
  27.  
  28. after 0 [list coroutine main apply {{argv0 argv} {
  29. set r1 [r]
  30. set chan [chan create read $r1]
  31. gets $chan line
  32. puts $line
  33. }} $argv0 $argv]
  34. vwait forever
  35.