@@ -183,12 +183,20 @@ local meta = getmetatable(tbl) local nm = {__index = proto or tbl} if meta ~= nil then nm = table.copy(meta) - nm[__index] = proto - nm[__metatable] = meta + nm.__index = proto + nm.__metatable = meta end return setmetatable(tbl or {},nm) +end +fn.defaults = function(dft, tbl) + tbl = tbl or {} + local rp = {} + for k,v in pairs(dft) do + if tbl[k] == nil then rp[k] = v end + end + return fn.proto(rp, tbl) end fn.case = function(e, c) if type(c[e]) == 'function'