Posted to tcl by pooryorick at Mon Jul 04 12:17:17 GMT 2016view raw

  1. #! /bin/env tclsh
  2.  
  3. package require sqlite3
  4.  
  5. coroutine main apply [list {argv0 argv} {
  6. sqlite3 db :memory:
  7.  
  8. db eval {
  9. create table x (
  10. entity
  11. , attribute
  12. , value
  13. )
  14. ; insert into x values
  15. (1 , "name" , "john")
  16. , (1 , "age" , 32)
  17. , (2 , "name" , "jill")
  18. , (2 , "gender" , "female")
  19. }
  20.  
  21. db eval {select * from x} record {
  22. puts [array get record]
  23. after 1000 [list after idle [list [info coroutine]]]
  24. yield
  25. }
  26.  
  27.  
  28. } [namespace current]] $argv0 $argv
  29.