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

#! /bin/env tclsh

package require sqlite3

coroutine main apply [list {argv0 argv} {
    sqlite3 db :memory:

    db eval {
        create table x (
            entity
            , attribute
            , value
        )
        ; insert into x values
            (1 , "name"    , "john")
            , (1 , "age"     , 32)
            , (2 , "name"    , "jill")
            , (2 , "gender"  , "female")
    }

    db eval {select * from x} record {
        puts [array get record]
        after 1000 [list after idle [list [info coroutine]]]
        yield
    }


} [namespace current]] $argv0 $argv