| 585 |
extern void swap(environment *env) |
extern void swap(environment *env) |
| 586 |
{ |
{ |
| 587 |
value *temp= env->head; |
value *temp= env->head; |
| 588 |
|
|
| 589 |
if(env->head->type == empty || CDR(env->head)->type == empty) { |
switch(check_args(env, unknown, unknown, empty)) { |
| 590 |
|
case 1: |
| 591 |
printerr(env, "Too Few Arguments"); |
printerr(env, "Too Few Arguments"); |
|
env->err=1; |
|
| 592 |
return; |
return; |
| 593 |
|
case 2: |
| 594 |
|
printerr(env, "Bad Argument Type"); |
| 595 |
|
return; |
| 596 |
|
default: |
| 597 |
|
break; |
| 598 |
} |
} |
| 599 |
|
|
| 600 |
env->head= CDR(env->head); |
env->head= CDR(env->head); |
| 601 |
CDR(temp)= CDR(env->head); |
CDR(temp)= CDR(env->head); |
| 602 |
CDR(env->head)= temp; |
CDR(env->head)= temp; |
| 608 |
{ |
{ |
| 609 |
value *val; |
value *val; |
| 610 |
|
|
| 611 |
if(env->head->type==empty) { |
switch(check_args(env, symb, empty)) { |
| 612 |
|
case 1: |
| 613 |
printerr(env, "Too Few Arguments"); |
printerr(env, "Too Few Arguments"); |
|
env->err= 1; |
|
| 614 |
return; |
return; |
| 615 |
} |
case 2: |
|
|
|
|
if(CAR(env->head)->type!=symb) { |
|
| 616 |
printerr(env, "Bad Argument Type"); |
printerr(env, "Bad Argument Type"); |
|
env->err= 2; |
|
| 617 |
return; |
return; |
| 618 |
|
default: |
| 619 |
|
break; |
| 620 |
} |
} |
| 621 |
|
|
| 622 |
val= CAR(env->head)->content.sym->val; |
val= CAR(env->head)->content.sym->val; |
| 645 |
|
|
| 646 |
gc_maybe(env); |
gc_maybe(env); |
| 647 |
|
|
| 648 |
if(env->head->type==empty) { |
switch(check_args(env, unknown, empty)) { |
| 649 |
|
case 1: |
| 650 |
printerr(env, "Too Few Arguments"); |
printerr(env, "Too Few Arguments"); |
|
env->err= 1; |
|
| 651 |
return; |
return; |
| 652 |
|
case 2: |
| 653 |
|
printerr(env, "Bad Argument Type"); |
| 654 |
|
return; |
| 655 |
|
default: |
| 656 |
|
break; |
| 657 |
} |
} |
| 658 |
|
|
| 659 |
switch(CAR(env->head)->type) { |
switch(CAR(env->head)->type) { |
| 768 |
} |
} |
| 769 |
|
|
| 770 |
if(myenv.interactive) |
if(myenv.interactive) |
| 771 |
printf(start_message); |
puts(start_message); |
| 772 |
|
|
| 773 |
while(1) { |
while(1) { |
| 774 |
if(myenv.in_string==NULL) { |
if(myenv.in_string==NULL) { |
| 863 |
{ |
{ |
| 864 |
value *old_head, *new_head, *item; |
value *old_head, *new_head, *item; |
| 865 |
|
|
|
if(env->head->type==empty) { |
|
|
printerr(env, "Too Few Arguments"); |
|
|
env->err= 1; |
|
|
return; |
|
|
} |
|
|
|
|
| 866 |
if(CAR(env->head)->type==empty) |
if(CAR(env->head)->type==empty) |
| 867 |
return; /* Don't reverse an empty list */ |
return; /* Don't reverse an empty list */ |
| 868 |
|
|
| 869 |
if(CAR(env->head)->type!=tcons) { |
switch(check_args(env, tcons, empty)) { |
| 870 |
|
case 1: |
| 871 |
|
printerr(env, "Too Few Arguments"); |
| 872 |
|
return; |
| 873 |
|
case 2: |
| 874 |
printerr(env, "Bad Argument Type"); |
printerr(env, "Bad Argument Type"); |
|
env->err= 2; |
|
| 875 |
return; |
return; |
| 876 |
|
default: |
| 877 |
|
break; |
| 878 |
} |
} |
| 879 |
|
|
| 880 |
old_head= CAR(env->head); |
old_head= CAR(env->head); |