@@ -19,6 +19,7 @@ static Object *apply_built_in(Object *, Object *, ErrorHandler, Binding *);
19
19
static Object * apply_lambda (Object * , Object * , ErrorHandler , Binding * );
20
20
static Object * execute (Callable , Object * , ErrorHandler , Binding * );
21
21
static void bind_parameters (Object * , Object * , ErrorHandler , Binding * );
22
+ static void binding_writer (void * , Printf );
22
23
23
24
void create_interpreter (void ) {
24
25
declare_nil ();
@@ -41,6 +42,14 @@ Binding *top_level(void) {
41
42
return top_level_binding ;
42
43
}
43
44
45
+ void declare_binding (void ) {
46
+ binding_type = declare ("Binding" , (Free )free_binding , binding_writer );
47
+ }
48
+
49
+ Object * capture_binding (Binding * binding ) {
50
+ return wrap (binding_type , binding );
51
+ }
52
+
44
53
Object * eval (Object * object , ErrorHandler error , Binding * binding ) {
45
54
Object * result ;
46
55
create_local ();
@@ -148,3 +157,7 @@ static void bind_parameters(Object *parameters, Object *arguments, ErrorHandler
148
157
add (binding , (char * )value (car (parameters )), clone (car (arguments )));
149
158
bind_parameters (cdr (parameters ), cdr (arguments ), error , binding );
150
159
}
160
+
161
+ static void binding_writer (void * binding , Printf printer ) {
162
+ printer ("<Binding>" );
163
+ }
0 commit comments