Skip to content

Commit 74f1976

Browse files
committed
Added type->string for debugging purposes
1 parent 1ba9e77 commit 74f1976

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

atoms.c

+4
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ Object *quoted_string(char *quoted) {
7373
return wrap(string_type, string);
7474
}
7575

76+
Object *unquoted_string(char *unquoted) {
77+
return wrap(string_type, unquoted);
78+
}
79+
7680
int is_string(Object *object) {
7781
return is_a(string_type, object);
7882
}

atoms.h

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ int is_number(Object *);
1919
Object *identifier(char *);
2020
int is_identifier(Object *);
2121
Object *quoted_string(char *);
22+
Object *unquoted_string(char *);
2223
int is_string(Object *);
2324

2425
#endif

standard_library.c

+10-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ static Object *numerically_equal(Object *, ErrorHandler, Binding *);
2222
static Object *plus(Object *, ErrorHandler, Binding *);
2323
static Object *minus(Object *, ErrorHandler, Binding *);
2424
static Object *nil_p(Object *, ErrorHandler, Binding *);
25+
static Object *type_to_string(Object *, ErrorHandler, Binding *);
2526
static Object *set_value(Object *, Object *, ErrorHandler, Binding *);
2627
static Object *overwrite_value(Object *, Object *, Binding *);
2728
static int is_argument_list(Object *);
@@ -42,6 +43,7 @@ void declare_standard_library(Binding *binding) {
4243
add(binding, "+", built_in(plus));
4344
add(binding, "-", built_in(minus));
4445
add(binding, "nil?", built_in(nil_p));
46+
add(binding, "type->string", built_in(type_to_string));
4547
}
4648

4749
static Object *quit(Object *arguments, ErrorHandler error, Binding *binding) {
@@ -158,11 +160,18 @@ static Object *minus(Object *arguments, ErrorHandler error, Binding *binding) {
158160

159161
static Object *nil_p(Object *arguments, ErrorHandler error, Binding *binding) {
160162
if (is_nil(arguments)) {
161-
return error("Arguments needed for unary operator nil?", nil());
163+
return error("Argument needed for unary operator nil?", nil());
162164
}
163165
return boolean(is_nil(car(arguments)));
164166
}
165167

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+
166175
static Object *set_value(Object *symbol, Object *rvalue, ErrorHandler error, Binding *binding) {
167176
if (! is_identifier(symbol)) {
168177
return error("Not an identifier", clone(symbol));

0 commit comments

Comments
 (0)