init() { FS = &install("FS", VAR|STR, " ", 0.0, hashtab)->c_sval; RS = &install("RS", VAR|STR, "\n", 0.0, hashtab)->c_sval; OFS = &install("OFS", VAR|STR , " ", 0.0, hashtab)->c_sval; ORS = &install("ORS", VAR|STR, "\n", 0.0, hashtab)->c_sval; OFMT = &install("OFMT", VAR|STR, "%.6g", 0.0, hashtab)->c_sval; NR = &install("NR", VAR|NUM, (char *)NULL, 0.0, hashtab)->c_fval; NF = &install("NF", VAR|NUM, (char *)NULL, 0.0, hashtab)->c_fval; FILENAME = &install("FILENAME", VAR|STR, (char *)NULL, 0.0, hashtab)->c_sval; install("PI", VAR|NUM, (char *)NULL, PI, hashtab); field[0] = mkcell(REC|STR, (char *)NULL, 0.0); /* $0 */ field[0]->c_sval = record; SUBSEP = &install("SUBSEP", VAR|STR, "\034", 0.0, hashtab)->c_sval; FNR = &install("FNR", VAR|NUM, (char *)NULL, 0.0, hashtab)->c_fval; RSTART = &install("RSTART", VAR|NUM, (char *)NULL, 0.0, hashtab)->c_fval; RLENGTH = &install("RLENGTH", VAR|NUM, (char *)NULL, 0.0, hashtab)->c_fval; }
T mapeval(T list, Environment env) { if (NILP(list)) return NIL; return mkcell(eval(CAR(list), env), mapeval(CDR(list), env)); }
T bind(T name, T value, T lookup) { T kv = mkcell(name, value); return mkcell(kv, env); }