@@ -22,6 +22,7 @@ static Object *numerically_equal(Object *, ErrorHandler, Binding *);
22
22
static Object * plus (Object * , ErrorHandler , Binding * );
23
23
static Object * minus (Object * , ErrorHandler , Binding * );
24
24
static Object * nil_p (Object * , ErrorHandler , Binding * );
25
+ static Object * type_to_string (Object * , ErrorHandler , Binding * );
25
26
static Object * set_value (Object * , Object * , ErrorHandler , Binding * );
26
27
static Object * overwrite_value (Object * , Object * , Binding * );
27
28
static int is_argument_list (Object * );
@@ -42,6 +43,7 @@ void declare_standard_library(Binding *binding) {
42
43
add (binding , "+" , built_in (plus ));
43
44
add (binding , "-" , built_in (minus ));
44
45
add (binding , "nil?" , built_in (nil_p ));
46
+ add (binding , "type->string" , built_in (type_to_string ));
45
47
}
46
48
47
49
static Object * quit (Object * arguments , ErrorHandler error , Binding * binding ) {
@@ -158,11 +160,18 @@ static Object *minus(Object *arguments, ErrorHandler error, Binding *binding) {
158
160
159
161
static Object * nil_p (Object * arguments , ErrorHandler error , Binding * binding ) {
160
162
if (is_nil (arguments )) {
161
- return error ("Arguments needed for unary operator nil?" , nil ());
163
+ return error ("Argument needed for unary operator nil?" , nil ());
162
164
}
163
165
return boolean (is_nil (car (arguments )));
164
166
}
165
167
168
+ static Object * type_to_string (Object * arguments , ErrorHandler error , Binding * binding ) {
169
+ if (is_nil (arguments )) {
170
+ return error ("Argument needed for unary operator nil?" , nil ());
171
+ }
172
+ return unquoted_string (type_name (car (arguments )));
173
+ }
174
+
166
175
static Object * set_value (Object * symbol , Object * rvalue , ErrorHandler error , Binding * binding ) {
167
176
if (! is_identifier (symbol )) {
168
177
return error ("Not an identifier" , clone (symbol ));
0 commit comments