aboutsummaryrefslogtreecommitdiff
path: root/src/builtins.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/builtins.c')
-rw-r--r--src/builtins.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/builtins.c b/src/builtins.c
index ade9091..2ad3916 100644
--- a/src/builtins.c
+++ b/src/builtins.c
@@ -14,6 +14,14 @@ SExpRef builtin_car(Interp *interp, SExpRef args) {
return CAR(CAR(args));
}
+SExpRef builtin_show(Interp *interp, SExpRef args) {
+ if (lisp_length(interp, args) != 1) {
+ return new_error(interp, "show wrong argument number.\n");
+ }
+ lisp_print(interp, CAR(args), stdout);
+ return NIL;
+}
+
SExpRef builtin_cdr(Interp *interp, SExpRef args) {
if (lisp_length(interp, args) != 1) {
return new_error(interp, "cdr: wrong argument number.\n");
@@ -51,8 +59,7 @@ static SExp raw_sub(SExp a, SExp b) {
else result -= b.integer;
return (SExp){ .type = kRealSExp, .real = result };
} else {
- int64_t result;
- return (SExp){ .type = kIntegerSExp, .real = a.integer - b.integer};
+ return (SExp){ .type = kIntegerSExp, .integer= a.integer - b.integer};
}
}