--- stack/stack.c 2003/08/04 13:50:53 1.128 +++ stack/stack.c 2003/08/04 14:13:16 1.129 @@ -822,7 +822,7 @@ } if(myenv.interactive) { - printf("Stack version $Revision: 1.128 $\n\ + printf("Stack version $Revision: 1.129 $\n\ Copyright (C) 2002 Mats Alritzson and Teddy Hogeborn\n\ Stack comes with ABSOLUTELY NO WARRANTY; for details type 'warranty;'.\n\ This is free software, and you are welcome to redistribute it\n\ @@ -1350,76 +1350,6 @@ POSSIBILITY OF SUCH DAMAGES.\n"); } -/* General assoc function */ -void assocgen(environment *env, funcp eqfunc) -{ - value *key, *item; - - /* Needs two values on the stack, the top one must be an association - list */ - if(env->head->type==empty || CDR(env->head)->type==empty) { - printerr("Too Few Arguments"); - env->err= 1; - return; - } - - if(CAR(env->head)->type!=tcons) { - printerr("Bad Argument Type"); - env->err= 2; - return; - } - - key=CAR(CDR(env->head)); - item=CAR(env->head); - - while(item->type == tcons){ - if(CAR(item)->type != tcons){ - printerr("Bad Argument Type"); - env->err= 2; - return; - } - push_val(env, key); - push_val(env, CAR(CAR(item))); - eqfunc(env); if(env->err) return; - - /* Check the result of 'eqfunc' */ - if(env->head->type==empty) { - printerr("Too Few Arguments"); - env->err= 1; - return; - } - if(CAR(env->head)->type!=integer) { - printerr("Bad Argument Type"); - env->err= 2; - return; - } - - if(CAR(env->head)->content.i){ - toss(env); if(env->err) return; - break; - } - toss(env); if(env->err) return; - - if(item->type!=tcons) { - printerr("Bad Argument Type"); - env->err= 2; - return; - } - - item=CDR(item); - } - - if(item->type == tcons){ /* A match was found */ - push_val(env, CAR(item)); - } else { - push_int(env, 0); - } - swap(env); if(env->err) return; - toss(env); if(env->err) return; - swap(env); if(env->err) return; - toss(env); -} - /* Discard the top element of the stack. */ extern void toss(environment *env) {