term lambda_1 (term v, term x) { term f, a; type tf; if (v->k != TERM_VAR) { sput ("lambda: 1st arg not variable\n", err); return UNDEF_TERM; } if (x->k == TERM_VAR && !strcmp (x->var.name, v->var.name) && equal_type (x->var.typ, v->var.typ)) return I (v->var.typ); if (!occur (v, x)) return ap (K (type_term (x), v->var.typ), x); f = x->ap.fnc; a = x->ap.arg; if (a->k == TERM_VAR && !strcmp (a->var.name, v->var.name) && equal_type (a->var.typ, v->var.typ) && !occur (v, f)) return f; tf = type_term (f); return ap (ap (S (v->var.typ, type_term (a), tf->fnc.res), lambda (v, f)), lambda (v, a)); }
int occur (term v, term x) { if (x->k == TERM_VAR && !strcmp (x->var.name, v->var.name) && equal_type (x->var.typ, v->var.typ)) return 1; if (x->k != TERM_AP) return 0; if (occur (v, x->ap.fnc)) return 1; if (occur (v, x->ap.arg)) return 1; return 0; }
int open (const char *pathname, int flags, ...) { if (____ifs_open_locked || ift::scoped_global_lock::locked()) { va_list argptr; va_start(argptr, flags); mode_t mode = (mode_t)va_arg(argptr, mode_t); int result = ____ifs_open_orig(pathname, flags, mode); va_end(argptr); return result; } ift::scoped_global_lock ____ifs_glock; void* ____ifs_addr = __builtin_return_address(0); std::pair< void*, int > occur(____ifs_addr, ____ifs_open_errno); static std::set< std::pair< void*, int > > ____ifs_history; if (____ifs_history.find(occur) != ____ifs_history.end()) { va_list argptr; va_start(argptr, flags); mode_t mode = (mode_t)va_arg(argptr, mode_t); int result = ____ifs_open_orig(pathname, flags, mode); va_end(argptr); return result; } ____ifs_history.insert(occur); errno = ____ifs_open_errno; return -1; }
// 检查连续的 9 个格子是否有效 bool isValid(const vector<char>& vec) { vector<bool> occur(9, false); for (int i = 0; i < 9; ++i) { if (isdigit(vec[i])) { if (occur[vec[i]-'1']) return false; else occur[vec[i]-'1'] = true; } } return true; }