Change evaluation strategy to normal order
[lambda.git] / print.c
1 #include <stdio.h>
2 #include "lambda.h"
3
4 void term_print(struct lambda *t)
5 {
6 switch(t->which){
7 case lambda_ident:
8 printf("%s", t->data.identifier);
9 break;
10 case lambda_abs:
11 printf("(λ");
12 printf("%s", t->data.abstraction.ident);
13 putchar('.');
14 term_print(t->data.abstraction.expr);
15 putchar(')');
16 break;
17 case lambda_app:
18 putchar('(');
19 term_print(t->data.application.expr1);
20 term_print(t->data.application.expr2);
21 putchar(')');
22 break;
23 }
24 }
25
26 void lambda_print(struct lambda *t)
27 {
28 term_print(t);
29 putchar('\n');
30 }