a = close: true, : => print "out of scope" b = : (left, right)-> right - left c = key1: true, :, key2: true w = <[name]>:123, <"new">:(val)=> {val} w.<>["new"] w.<>[name] do close _ = : -> print "out of scope" d, e = a.close, a. f = a\ 1 a. = (x, y)-> x + y do {:new, :, : closeA} = a print new, close, closeA do local * x, \ {:new, :var, :, : closeA}, \ :num, :, : \ = 123, a.b.c, func! x.abc, a.b.<> = 123, {} func!.<> = mt --, extra a, b.c.<>, d, e = 1, mt, "abc", nil is_same = a.<>.__index == a. -- a.<> = __index: tb a.<>.__index = tb a. = tb -- mt = a.<> tb\func #list tb\<"func">list tb\<"func"> list import "module" as :, :setFunc with tb print ., .x\ "key" a = ..\<"new"> 123 b = t#..test c = t #. .test <>:mt = a a = <>:mt a = <>:__index:mt local index <>:__index:index = a : = a do <>:{new:ctor, :update} = a do {new:ctor, :update} = a.<> tb = {} do f = tb\<"value#{x < y}">(123, ...) f tb\<'value'> 123, ... tb\<[[ value 1 ]]>(123, ...) return tb\<["value" .. tostring x > y]>(123, ...) do f = tb\<'value'>(123, ...) f tb\<'value'>(123, ...) tb\<'value'>(123, ...) return tb\<'value'> 123, ... do f = tb.<["value"]> 123, ... f = tb.<"value#{x < y}">(123, ...) f tb.<'value'> 123, ... tb.<[[ value 1]]>(123, ...) return tb.<["value" .. tostring x > y]>(123, ...) nil