literals
[lambda.git] / reduce.c
index 65610e5..8ba8583 100644 (file)
--- a/reduce.c
+++ b/reduce.c
@@ -80,6 +80,8 @@ void lambda_reduce(struct lambda *t, struct lambda *total, int *maxdepth)
                t1 = t->data.application.expr1;
                t2 = t->data.application.expr2;
                lambda_reduce(t1, total, maxdepth);
+               //For applicative order
+               lambda_reduce(t2, total, maxdepth);
                if(t1->which == lambda_abs){
                        lambda_print(total, t);
                        printf("β -> ");
@@ -94,5 +96,8 @@ void lambda_reduce(struct lambda *t, struct lambda *total, int *maxdepth)
                        (*maxdepth)--;
                        lambda_reduce(t, total, maxdepth);
                }
+               //For applicative order
+       } else if(t->which == lambda_abs) {
+               lambda_reduce(t->data.abstraction.expr, total, maxdepth);
        }
 }