#pragma once #include #include #include #include #include "ast.h" #include "environment.h" using namespace std; using Hook2 = function; using Hook3 = function; extern const unordered_map typeName; ostream& operator<<(ostream &os,AST::Type t); template string stringify(const vector &v,const string &join=", "); Hook checkedHook(const Name &name, const vector &types, const Hook &func); Hook checkedHook(const Name &name, const vector &types1,const vector &types2, const Hook2 &func); Hook checkedHook(const Name &name, const vector &types1,const vector &types2,const vector &types3, const Hook3 &func);