bool operator()(symbol const & lhs, def const & rhs) const { return operator()(lhs.c_str(), rhs.name()); }
inline std::size_t hash_value(symbol const& symb) { return boost::hash_range(symb.c_str(), symb.c_str() + symb.size()); }
const char * name(void) const { return name_.c_str(); }
std::string operator()(symbol const& s) const { return s.c_str(); // TODO: escaping.. }