4 #define PRINT_ABS(t) {\
5 if(t->data.abstraction.strict)\
7 printf("%s", t->data.abstraction.ident);\
11 void term_print(struct lambda
*t
, struct lambda
*mark
)
17 // printf("%s(%p)", t->data.identifier.ident, (void *)t->data.identifier.binding);
18 printf("%s", t
->data
.identifier
.ident
);
23 while((t
= t
->data
.abstraction
.expr
)->which
== lambda_abs
){
31 if(t
->data
.application
.expr1
->which
== lambda_abs
)
33 term_print(t
->data
.application
.expr1
, mark
);
34 if(t
->data
.application
.expr1
->which
== lambda_abs
)
39 if(t
->data
.application
.expr2
->which
== lambda_app
)
41 term_print(t
->data
.application
.expr2
, mark
);
42 if(t
->data
.application
.expr2
->which
== lambda_app
)
50 void lambda_print(struct lambda
*t
, struct lambda
*mark
)