diff options
-rw-r--r-- | libguile/eval.c | 68 |
1 files changed, 28 insertions, 40 deletions
diff --git a/libguile/eval.c b/libguile/eval.c index 16410c1ce..36e562664 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -518,7 +518,7 @@ scm_m_quote (xorig, env) SCM_ASSYNT (scm_ilength (SCM_CDR (xorig)) == 1, xorig, scm_s_expression, s_quote); - return scm_cons_source (xorig, SCM_IM_QUOTE, x); + return scm_cons (SCM_IM_QUOTE, x); } @@ -533,7 +533,7 @@ scm_m_begin (xorig, env) { SCM_ASSYNT (scm_ilength (SCM_CDR (xorig)) >= 1, xorig, scm_s_expression, s_begin); - return scm_cons_source (xorig, SCM_IM_BEGIN, SCM_CDR (xorig)); + return scm_cons (SCM_IM_BEGIN, SCM_CDR (xorig)); } SCM_SYNTAX(s_if, "if", scm_makmmacro, scm_m_if); @@ -546,7 +546,7 @@ scm_m_if (xorig, env) { int len = scm_ilength (SCM_CDR (xorig)); SCM_ASSYNT (len >= 2 && len <= 3, xorig, scm_s_expression, "if"); - return scm_cons_source (xorig, SCM_IM_IF, SCM_CDR (xorig)); + return scm_cons (SCM_IM_IF, SCM_CDR (xorig)); } @@ -564,7 +564,7 @@ scm_m_set_x (xorig, env) SCM_ASSYNT (2 == scm_ilength (x), xorig, scm_s_expression, scm_s_set_x); SCM_ASSYNT (SCM_NIMP (SCM_CAR (x)) && SCM_SYMBOLP (SCM_CAR (x)), xorig, scm_s_variable, scm_s_set_x); - return scm_cons_source (xorig, SCM_IM_SET_X, x); + return scm_cons (SCM_IM_SET_X, x); } @@ -617,7 +617,7 @@ scm_m_and (xorig, env) int len = scm_ilength (SCM_CDR (xorig)); SCM_ASSYNT (len >= 0, xorig, scm_s_test, s_and); if (len >= 1) - return scm_cons_source (xorig, SCM_IM_AND, SCM_CDR (xorig)); + return scm_cons (SCM_IM_AND, SCM_CDR (xorig)); else return SCM_BOOL_T; } @@ -633,7 +633,7 @@ scm_m_or (xorig, env) int len = scm_ilength (SCM_CDR (xorig)); SCM_ASSYNT (len >= 0, xorig, scm_s_test, s_or); if (len >= 1) - return scm_cons_source (xorig, SCM_IM_OR, SCM_CDR (xorig)); + return scm_cons (SCM_IM_OR, SCM_CDR (xorig)); else return SCM_BOOL_F; } @@ -657,7 +657,7 @@ scm_m_case (xorig, env) || scm_i_else == SCM_CAR (proc), xorig, scm_s_clauses, s_case); } - return scm_cons_source (xorig, SCM_IM_CASE, cdrx); + return scm_cons (SCM_IM_CASE, cdrx); } @@ -689,7 +689,7 @@ scm_m_cond (xorig, env) xorig, "bad recipient", s_cond); x = SCM_CDR (x); } - return scm_cons_source (xorig, SCM_IM_COND, cdrx); + return scm_cons (SCM_IM_COND, cdrx); } SCM_SYNTAX(s_lambda, "lambda", scm_makmmacro, scm_m_lambda); @@ -734,12 +734,8 @@ scm_m_lambda (xorig, env) } memlambda: - return scm_cons_source (xorig, - SCM_IM_LAMBDA, - scm_cons (SCM_CAR (x), - scm_m_body (SCM_IM_LAMBDA, - SCM_CDR (x), - s_lambda))); + return scm_cons2 (SCM_IM_LAMBDA, SCM_CAR (x), + scm_m_body (SCM_IM_LAMBDA, SCM_CDR (x), s_lambda)); } SCM_SYNTAX(s_letstar,"let*", scm_makmmacro, scm_m_letstar); @@ -768,12 +764,8 @@ scm_m_letstar (xorig, env) } x = scm_cons (vars, SCM_CDR (x)); - return scm_cons_source (xorig, - SCM_IM_LETSTAR, - scm_cons (SCM_CAR (x), - scm_m_body (SCM_IM_LETSTAR, - SCM_CDR (x), - "let*"))); + return scm_cons2 (SCM_IM_LETSTAR, SCM_CAR (x), + scm_m_body (SCM_IM_LETSTAR, SCM_CDR (x), s_letstar)); } /* DO gets the most radically altered syntax @@ -827,7 +819,7 @@ scm_m_do (xorig, env) x = scm_cons2 (SCM_CAR (x), SCM_CDR (x), steps); x = scm_cons2 (vars, inits, x); bodycheck (xorig, SCM_CARLOC (SCM_CDR (SCM_CDR (x))), "do"); - return scm_cons_source (xorig, SCM_IM_DO, x); + return scm_cons (SCM_IM_DO, x); } /* evalcar is small version of inline EVALCAR when we don't care about @@ -1008,11 +1000,8 @@ scm_m_letrec1 (op, imm, xorig, env) } while (SCM_NIMP (proc = SCM_CDR (proc))); - return scm_cons_source (xorig, op, - scm_cons (vars, - scm_cons (inits, - scm_m_body (imm, SCM_CDR (x), - what)))); + return scm_cons2 (op, vars, + scm_cons (inits, scm_m_body (imm, SCM_CDR (x), what))); } SCM_SYNTAX(s_letrec, "letrec", scm_makmmacro, scm_m_letrec); @@ -1027,12 +1016,10 @@ scm_m_letrec (xorig, env) SCM_ASSYNT (scm_ilength (x) >= 2, xorig, scm_s_body, s_letrec); if (SCM_NULLP (SCM_CAR (x))) /* null binding, let* faster */ - return scm_m_letstar (scm_cons_source (xorig, - SCM_CAR (xorig), - scm_cons (SCM_EOL, - scm_m_body (SCM_IM_LETREC, - SCM_CDR (x), - "letrec"))), + return scm_m_letstar (scm_cons2 (SCM_CAR (xorig), SCM_EOL, + scm_m_body (SCM_IM_LETREC, + SCM_CDR (x), + s_letrec)), env); else return scm_m_letrec1 (SCM_IM_LETREC, SCM_IM_LETREC, xorig, env); @@ -1058,12 +1045,10 @@ scm_m_let (xorig, env) && SCM_CONSP (SCM_CAR (proc)) && SCM_NULLP (SCM_CDR (proc)))) { /* null or single binding, let* is faster */ - return scm_m_letstar (scm_cons_source (xorig, - SCM_CAR (xorig), - scm_cons (proc, - scm_m_body (SCM_IM_LET, - SCM_CDR (x), - "let"))), + return scm_m_letstar (scm_cons2 (SCM_CAR (xorig), proc, + scm_m_body (SCM_IM_LET, + SCM_CDR (x), + s_let)), env); } @@ -1128,7 +1113,7 @@ scm_m_cont (xorig, env) { SCM_ASSYNT (scm_ilength (SCM_CDR (xorig)) == 1, xorig, scm_s_expression, s_atcall_cc); - return scm_cons_source (xorig, SCM_IM_CONT, SCM_CDR (xorig)); + return scm_cons (SCM_IM_CONT, SCM_CDR (xorig)); } /* Multi-language support */ @@ -1256,7 +1241,10 @@ scm_m_expand_body (SCM xorig, SCM env) if (!SCM_SYMBOLP (SCM_CAR (form))) break; - form = scm_macroexp (scm_cons (SCM_CAR (form), SCM_CDR (form)), env); + form = scm_macroexp (scm_cons_source (form, + SCM_CAR (form), + SCM_CDR (form)), + env); if (SCM_IM_DEFINE == SCM_CAR (form)) { |