X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fscheme%2Fao_scheme_lambda.c;h=18470efe54193c2409de11caf89d6c06abe1e7b5;hb=4b52fc6eea9a478cb3dd42dcd32c92838df39734;hp=be87f4d1995d12bf8e1c7b58b6e5f5bf4338a491;hpb=ca27d467198c556be483961a6ca3b8f97bbe96a6;p=fw%2Faltos diff --git a/src/scheme/ao_scheme_lambda.c b/src/scheme/ao_scheme_lambda.c index be87f4d1..18470efe 100644 --- 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 -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); - printf("("); - printf("%s", ao_scheme_args_name(lambda->args)); + putc('(', out); + fputs(ao_scheme_args_name(lambda->args), out); while (cons) { - printf(" "); - ao_scheme_poly_write(cons->car); + putc(' ', out); + ao_scheme_poly_write(out, cons->car, write); cons = ao_scheme_poly_cons(cons->cdr); } - printf(")"); + putc(')', out); } 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)); - code = ao_scheme_cons_fetch(0); + code = ao_scheme_cons_fetch(); 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); } - ao_scheme_poly_stash(1, varargs); + ao_scheme_poly_stash(varargs); 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;