void bindfunc(char *name, tag tag, int(*func)(int)){ int sym,val; sym = makesym(name); val = freshcell(); SET_TAG(val,tag); SET_SUBR(val,func); SET_CDR(val,0); bindsym(sym,val); }
void bindfunc(char *name, tag tag, int func){ int sym,val; sym = makesym(name); val = freshcell(); SET_TAG(val,tag); switch(tag){ case SUBR: case FSUBR: SET_SUBR(val,func); break; case LAMBDA: SET_BIND(val,func); break; } SET_CDR(val,0); bindsym(sym,val); }
void bindfunc(char *name, ftype ftype, int func){ int addr; addr = freshcell(); SET_NAME(addr,name); SET_TAG(addr,FUN); SET_FTYPE(addr,ftype); switch(ftype){ case SUBR: case FSUBR: SET_SUBR(addr,func); case LAMBDA: SET_BIND(addr,func); } SET_CDR(addr,E); E = addr; }