15 // TODO(#285): there is no way to execute struct Expr
27 struct Expr atom_as_expr(struct Atom *atom);
28 struct Expr cons_as_expr(struct Cons *cons);
30 void destroy_expr(struct Expr expr);
31 void print_expr_as_sexpr(struct Expr expr);
45 float num; // ATOM_NUMBER
46 char *sym; // ATOM_SYMBOL
47 char *str; // ATOM_STRING
51 struct Atom *create_number_atom(float num);
52 struct Atom *create_string_atom(const char *str, const char *str_end);
53 struct Atom *create_symbol_atom(const char *sym, const char *sym_end);
54 void destroy_atom(struct Atom *atom);
55 void print_atom_as_sexpr(struct Atom *atom);
63 struct Cons *create_cons(struct Expr car, struct Expr cdr);
64 void destroy_cons(struct Cons *cons);
65 void print_cons_as_sexpr(struct Cons *cons);