@@ -176,4 +176,22 @@ } else static assert(false, "unknown type <"~T.stringof~"> during AST encoding"); } + +/// No hook version +Value ast2table(T)(T e) +{ + //[TODO] I really need to automate this!!!!!!!!!!!!1 + Value rec(AST _) { + if(auto e = cast(Str)_) return ast2table(e, &rec); + if(auto e = cast(Int)_) return ast2table(e, &rec); + if(auto e = cast(Var)_) return ast2table(e, &rec); + if(auto e = cast(Die)_) return ast2table(e, &rec); + if(auto e = cast(Let)_) return ast2table(e, &rec); + if(auto e = cast(Lay)_) return ast2table(e, &rec); + if(auto e = cast(App)_) return ast2table(e, &rec); + if(auto e = cast(Fun)_) return ast2table(e, &rec); + assert(false); + } + return rec(e); +}