projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/scheme: Allow unicode in lexer
[fw/altos]
/
src
/
scheme
/
ao_scheme_lambda.c
diff --git
a/src/scheme/ao_scheme_lambda.c
b/src/scheme/ao_scheme_lambda.c
index be87f4d1995d12bf8e1c7b58b6e5f5bf4338a491..18470efe54193c2409de11caf89d6c06abe1e7b5 100644
(file)
--- a/
src/scheme/ao_scheme_lambda.c
+++ b/
src/scheme/ao_scheme_lambda.c
@@
-50,19
+50,19
@@
const struct ao_scheme_type ao_scheme_lambda_type = {
};
void
};
void
-ao_scheme_lambda_write(
ao_poly poly
)
+ao_scheme_lambda_write(
FILE *out, ao_poly poly, bool write
)
{
struct ao_scheme_lambda *lambda = ao_scheme_poly_lambda(poly);
struct ao_scheme_cons *cons = ao_scheme_poly_cons(lambda->code);
{
struct ao_scheme_lambda *lambda = ao_scheme_poly_lambda(poly);
struct ao_scheme_cons *cons = ao_scheme_poly_cons(lambda->code);
- p
rintf("("
);
-
printf("%s", ao_scheme_args_name(lambda->args)
);
+ p
utc('(', out
);
+
fputs(ao_scheme_args_name(lambda->args), out
);
while (cons) {
while (cons) {
- p
rintf(" "
);
- ao_scheme_poly_write(
cons->car
);
+ p
utc(' ', out
);
+ ao_scheme_poly_write(
out, cons->car, write
);
cons = ao_scheme_poly_cons(cons->cdr);
}
cons = ao_scheme_poly_cons(cons->cdr);
}
- p
rintf(")"
);
+ p
utc(')', out
);
}
static ao_poly
}
static ao_poly
@@
-89,9
+89,9
@@
ao_scheme_lambda_alloc(struct ao_scheme_cons *code, int args)
}
}
}
}
- ao_scheme_cons_stash(
0,
code);
+ ao_scheme_cons_stash(code);
lambda = ao_scheme_alloc(sizeof (struct ao_scheme_lambda));
lambda = ao_scheme_alloc(sizeof (struct ao_scheme_lambda));
- code = ao_scheme_cons_fetch(
0
);
+ code = ao_scheme_cons_fetch();
if (!lambda)
return AO_SCHEME_NIL;
if (!lambda)
return AO_SCHEME_NIL;
@@
-160,9
+160,9
@@
ao_scheme_lambda_eval(void)
return ao_scheme_error(AO_SCHEME_INVALID, "need at least %d args, got %d", args_wanted, args_provided);
}
return ao_scheme_error(AO_SCHEME_INVALID, "need at least %d args, got %d", args_wanted, args_provided);
}
- ao_scheme_poly_stash(
1,
varargs);
+ ao_scheme_poly_stash(varargs);
next_frame = ao_scheme_frame_new(args_wanted + (varargs != AO_SCHEME_NIL));
next_frame = ao_scheme_frame_new(args_wanted + (varargs != AO_SCHEME_NIL));
- varargs = ao_scheme_poly_fetch(
1
);
+ varargs = ao_scheme_poly_fetch();
if (!next_frame)
return AO_SCHEME_NIL;
if (!next_frame)
return AO_SCHEME_NIL;