in include/S_Expression.h [628:644]
bool match_with(const s_expr& expr) {
if (!expr.is_list()) {
return false;
}
if (m_heads.size() > expr.size()) {
return false;
}
for (size_t i = 0; i < m_heads.size(); ++i) {
if (!m_heads[i].match_with(expr[i])) {
return false;
}
}
if (m_tail) {
m_tail->get() = expr.tail(m_heads.size());
}
return true;
}