4 void lambda_free(struct lambda
*t
)
10 free(t
->data
.identifier
.ident
);
13 free(t
->data
.abstraction
.ident
);
14 lambda_free(t
->data
.abstraction
.expr
);
17 lambda_free(t
->data
.application
.expr1
);
18 lambda_free(t
->data
.application
.expr2
);
28 struct lambda
*copy(struct lambda
*t
)
30 struct lambda
*c
= malloc(sizeof (struct lambda
));
34 c
->data
.identifier
.ident
= strdup(t
->data
.identifier
.ident
);
35 c
->data
.identifier
.revision
= t
->data
.identifier
.revision
;
38 c
->data
.abstraction
.ident
= strdup(t
->data
.abstraction
.ident
);
39 c
->data
.abstraction
.strict
= t
->data
.abstraction
.strict
;
40 c
->data
.abstraction
.expr
= copy(t
->data
.abstraction
.expr
);
41 c
->data
.abstraction
.revision
= t
->data
.abstraction
.revision
;
44 c
->data
.application
.expr1
= copy(t
->data
.application
.expr1
);
45 c
->data
.application
.expr2
= copy(t
->data
.application
.expr2
);