//If the first argument is an abstraction, we apply
t1 = t->data.application.expr1;
t2 = t->data.application.expr2;
- lambda_reduce(t1, total, maxdepth);
if(t1->which == lambda_abs){
subst(t1->data.abstraction.ident, t1->data.abstraction.expr, t2, total);
(*maxdepth)--;
printf("-> ");
lambda_print(total);
lambda_reduce(t, total, maxdepth);
- } else {
- lambda_reduce(t2, total, maxdepth);
}
break;
}