Posted to tcl by aspect at Fri Mar 01 22:49:16 GMT 2024view pretty

#!/usr/bin/env tclsh
#
#

set interp [interp create]

$interp eval {
    proc Try {script} {
        list [catch {uplevel #0 $script} e o] $e $o
    }
}

proc Call {interp script} {
    lassign [$interp eval [list Try $script]] rc res opts
    return -code $rc -options $opts $res
}

proc putl args {
    puts $args
}

interp bgerror {} {putl bgerror}

after 0 {Call $interp {expr 1/0}}

after 100 {incr forever}
vwait forever
puts done