union {
struct {
char *ident;
- unsigned int revision;
+ struct lambda *binding;
} identifier;
struct {
char *ident;
- unsigned int revision;
+ bool strict;
struct lambda *expr;
} abstraction;
struct {
struct lambda *value;
};
+struct lambda *make_lambda();
struct lambda *make_ident(char *);
-struct lambda *make_abstraction(char *, struct lambda *);
+struct lambda *make_abstraction(char *, bool, struct lambda *);
struct lambda *make_application(struct lambda *, struct lambda *);
struct lambda *make_numeral(unsigned int i);
struct lambda *make_bool(bool b);