summaryrefslogtreecommitdiff
path: root/libguile/eval.c
AgeCommit message (Collapse)AuthorFilesLines
2005-01-10(scm_eval): Added example to docstring. Thanks to Issac Trotts!Marius Vollmer1-1/+2
2005-01-02Use new vector elements API or simple vector API, as appropriate.Marius Vollmer1-39/+27
Removed SCM_HAVE_ARRAYS ifdefery. Replaced all uses of SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2004-09-22(scm_eval, scm_apply, call_cxr_1): Use scm_i_chase_pairsMarius Vollmer1-190/+162
instead of explicit code.
2004-08-21 * eval.c (unmemoize_exprs): When dropping internal body markersDirk Herrmann1-10/+13
from the output during unmemoization, also drop those that are not immediately at the beginning of a body.
2004-08-20(scm_lookupcar1): Report "Variable used before given a value" insetadMarius Vollmer1-1/+1
of an "Unbound" one for variables that are found but still contain SCM_UNDEFINED.
2004-08-20(scm_lookupcar1): Report an "Undefined variable" insetad of anMarius Vollmer1-4/+19
"Unbound" one for variables that are found but still contain SCM_UNDEFINED.
2004-08-19* strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,Marius Vollmer1-31/+32
scm_i_string_writable_chars, scm_i_string_stop_writing): New, to replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH. Updated all uses. (scm_i_make_string, scm_c_make_string): New, to replace scm_allocate_string. Updated all uses. (SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS, SCM_STRING_LENGTH): Deprecated. (scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string, scm_str2string, scm_makfrom0str, scm_makfrom0str_opt): Discouraged. Replaced all uses with scm_from_locale_string or similar, as appropriate. (scm_c_string_length, scm_c_string_ref, scm_c_string_set_x, scm_c_substring, scm_c_substring_shared, scm_c_substring_copy, scm_substring_shared, scm_substring_copy): New. * symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC, SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS, SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol, scm_str2symbol, scm_mem2uninterned_symbol): Discouraged. (SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str): Deprecated. (SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS, SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed. (scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln): New, to replace scm_str2symbol and scm_mem2symbol, respectively. Updated all uses. (scm_gensym): Generate only the number suffix in the buffer, just string-append the prefix.
2004-08-10* stime.c, socket.c, simpos.c, procs.c, posix.c, ports.c,Marius Vollmer1-1/+1
net_db.c, fports.c, filesys.c, eval.c, deprecation.c, dynl.c: Replaced uses of SCM_STRING_CHARS with proper uses of scm_to_locale_string. Replaced SCM_STRINGP with scm_is_string. Replaced scm_mem2string with scm_from_locale_string. * simpos.c, posix.c (allocate_string_pointers, environ_list_to_c): Removed, replaced all uses with scm_i_allocate_string_pointers.
2004-08-03(scm_make_real, scm_num2dbl, scm_float2num, scm_double2num):Marius Vollmer1-12/+12
Discouraged by moving to discouraged.h and discouraged.c. Replaced all uses with scm_from_double. (scm_num2float, scm_num2double): Discouraged by moving prototype to discouraged.h and rewriting in terms of scm_to_double. Replaced all uses with scm_to_double.
2004-08-02(SCM_EVALIM, SCM_EVALIM2, SCM_XEVAL, SCM_XEVALCAR): Renamed to SCM_I_*Marius Vollmer1-20/+20
in order to avoid collisions with the versions defined in deprecated.h.
2004-07-27* tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it intoMarius Vollmer1-34/+35
deprecated.h. Replaced all uses with scm_is_eq.
2004-07-23* deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,Marius Vollmer1-25/+25
SCM_INUM): Deprecated by reenaming them to SCM_I_INUMP, SCM_I_NINUMP and SCM_I_INUM, respectively and adding deprecated versions to deprecated.h and deprecated.c. Changed all uses to either use the SCM_I_ variants or scm_is_*, scm_to_*, or scm_from_*, as appropriate.
2004-07-10* validate.h, deprecated.h (SCM_VALIDATE_INUM, SCM_VALIDATE_INUM_COPY,Marius Vollmer1-4/+6
SCM_VALIDATE_BIGINT, SCM_VALIDATE_INUM_MIN, SCM_VALIDATE_INUM_MIN_COPY, SCM_VALIDATE_INUM_MIN_DEF_COPY,SCM_VALIDATE_INUM_DEF, SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_INUM_RANGE, SCM_VALIDATE_INUM_RANGE_COPY): Deprecated because they make the fixnum/bignum distinction visible. Changed all uses to scm_to_size_t or similar.
2004-07-08* numbers.h (SCM_MAKINUM, SCM_I_MAKINUM): Renamed SCM_MAKINUM toMarius Vollmer1-1/+1
SCM_I_MAKINUM and changed all uses.
2004-07-06* deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,Marius Vollmer1-37/+37
SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into "deprecated.h". Replaced all uses with scm_is_false, scm_is_true, scm_from_bool, and scm_is_bool, respectively.
2004-06-27 * backtrace.c (display_expression, display_frame): CallDirk Herrmann1-8/+28
scm_i_unmemoize_expr for unmemoizing a memoized object holding a single memoized expression. * debug.c (memoized_print): Don't try to unmemoize the memoized object, since we can't know whether it holds a single expression or a body. (scm_mem_to_proc): Removed check for lambda expression, since it was moot anyway. Whoever uses these functions for debugging purposes should know what they do: Creating invalid memoized code will cause crashes, independent of whether this check is present or not. (scm_proc_to_mem): Take the closure's code as it is and don't append a SCM_IM_LAMBDA isym. To allow easier debugging, the memoized code should not be modified. * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed scm_unmemoize from public use, but made scm_i_unmemoize_expr available as a guile internal function instead. However, scm_i_unmemoize_expr will only work on memoized objects that hold a single memoized expression. It won't work with bodies. * debug.c (scm_procedure_source), macros.c (macro_print), print.c (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body, i. e. a list of expressions. * eval.c (unmemoize_exprs): Drop internal body markers from the output during unmemoization. * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr, scm_i_unmemocopy_body): Removed scm_unmemocopy from public use, but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available as guile internal functions instead. scm_i_unmemoize_expr will only work on a single memoized expression, while scm_i_unmemocopy_body will only work on bodies.
2004-06-21 * eval.c (unmemoize_exprs): Handle semi-memoized code.Dirk Herrmann1-8/+28
(scm_cons_source, scm_primitive_eval): Prefer higher level predicate SCM_FALSEP over SCM_IMP.
2004-06-12(unmemoize_exprs): use SCM_CONSP for the loop condition.Han-Wen Nienhuys1-2/+2
2004-06-06 * list.[ch] (scm_i_finite_list_copy): New internal function toDirk Herrmann1-311/+500
copy lists that are known to be finite (though not necessarily proper). * debug.c (scm_procedure_source): Don't have scm_unmemocopy treat a closure's argument list like an expression of a body. * eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and, unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay, unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let, unmemoize_letrec, unmemoize_letstar, unmemoize_or, unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc, unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref, unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x, unmemoize_builtin_macro): New static functions and symbols. (scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy now has a slightly different meaning: The memoized form that is receives as its argument is now interpreted as a sequence of expressions from a body. (unmemocar, scm_unmemocar): Since the whole functionality of unmemocar and scm_unmemocar is not needed any more, scm_unmemocar has its old content back and is deprecated, while unmemocar has been removed. (SCM_BIT7): Removed. (CEVAL): For unmemoizing a single expression, call unmemoize_expression instead of scm_unmemocopy, which now expects a sequence of body expressions. Eliminated unnecessary empty environment frame when executing let* forms. Eliminated unmemoization step from evaluator.
2004-06-02(scm_macroexp, macroexp): Renamed scm_macroexp toMarius Vollmer1-44/+50
macroexp and made static. Added new version of scm_macroexp that emits a deprecation warning and then calls macroexp. (scm_m_undefine): Issue deprecation warning.
2004-05-30 * eval.c (lookup_global_symbol, literal_p, try_macro_lookup):Dirk Herrmann1-30/+27
Modified to make set! work on symbols that represent syntactic keywords.
2004-05-22 * eval.c (s_macro_keyword, scm_m_set_x): Remove checking forDirk Herrmann1-6/+1
misplaced syntactic keywords. This will not work unless guile's defmacro feature is deprecated. (scm_m_case): Fixed a bug that caused the list of labels to grow with every case form.
2004-05-16 * eval.c (unmemoize_quote): New static function.Dirk Herrmann1-5/+20
(scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code representation of 'quote' and '@slot-ref' to an improper list. This reduces execution time, the number of cells used to hold the memoized code, and thus also reduces garbage collection time. (scm_unmemocopy): Use unmemoize_quote for quote expressions. (SCM_CEVAL): Changed macro handling to also work with macros that return improper lists. Added an assertion, that the code returned by a macro transformer will not lead to cycles in the memoized code.
2004-05-15 No functional change, just rearrangements of functions within theDirk Herrmann1-232/+230
file. * eval.c (scm_ilookup, scm_unbound_variable_key, error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to the definitions used for execution, since that's where they will belong to later.
2004-05-01(scm_macroexp): Add prototype, since it's not in eval.h underKevin Ryde1-0/+3
--disable-deprecated. Reported by Andreas Vögele.
2004-04-26 * libguile/eval.c (s_macro_keyword): New static identifier.Dirk Herrmann1-9/+45
(scm_m_define): Change order to first create binding and evaluating the expression afterwards. (scm_m_set_x): Memoize complete set! expression. Only leave symbols if no binding exists at memoization time. Throw error if assigning to a syntactic keyword. (lazy_memoize_variable): New function. (CEVAL): When execution set!, perform lazy memoization if unmemoized symbol is detected. * libguile/modules.c (module_variable): Return variables with unbound value. * libguile/tags.h: Fix comment. * test-suite/tests/syntax.test: Add test case to check the correct handling of define expressions.
2004-04-22 Hide the implementation of ilocs and isyms in eval.c.Dirk Herrmann1-48/+112
* deprecated.h (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST, SCM_ICDRP), eval.c (SCM_IFRINC, SCM_ICDR, SCM_IFRAME, SCM_IDIST, SCM_ICDRP), eval.h (SCM_ICDR, SCM_IFRINC, SCM_IFRAME, SCM_IDIST, SCM_ICDRP): Deprecated and added to deprecated.h. Moved from eval.h to eval.c. * deprecated.c (scm_isymnames), deprecated.h (scm_isymnames, SCM_ISYMNUM, SCM_ISYMCHARS), eval.c (SCM_ISYMNUM, isymnames, scm_unmemocopy, CEVAL), print.c (scm_isymnames), tags.h (SCM_ISYMNUM, scm_isymnames, SCM_ISYMCHARS): Deprecated scm_isymnames, SCM_ISYMNUM and SCM_ISYMCHARS and added to deprecated.[hc]. Moved scm_isymnames from print.c to eval.c and renamed to isymnames. Moved SCM_ISYMNUM from tags.h to eval.c and renamed to ISYMNUM. * eval.c (scm_i_print_iloc, scm_i_print_isym), eval.h (scm_i_print_iloc, scm_i_print_isym), print.c (scm_iprin1): Extracted printing of ilocs and isyms to guile internal functions scm_i_print_iloc, scm_i_print_isym of eval.c.
2004-04-19 * eval.c (scm_unmemocopy): Fixed unmemoization of let*.Dirk Herrmann1-23/+23
(deval_args, CEVAL): Minor improvements: Reduced variable scopes, added const qualifiers, cast intentionally unused expressions to void for emphasis, improved comment.
2004-04-03 * eval.c (CEVAL): Don't distinguish between short and longDirk Herrmann1-319/+323
instructions when dispatching - just always dispatch on the instruction code, which is common for short and long instructions. Further, removed unnecessary goto statements and added comment.
2004-04-03 * eval.c (scm_unmemocopy): Don't distinguish between short andDirk Herrmann1-161/+164
long instructions when dispatching - just always dispatch on the instruction code, which is common for short and long instructions. Further, removed unnecessary goto statements, fixed indentation and replaced SCM_IMP predicates by SCM_NULLP.
2004-04-03 * eval.c (scm_lookupcar1, CEVAL): Use SCM_ILOCP instead ofDirk Herrmann1-7/+3
comparison with SCM_ILOC00. In CEVAL, eliminate goto-label 'checkmacro'.
2004-03-29 Introduce scm_debug_mode_p as a replacement for scm_debug_mode andDirk Herrmann1-181/+202
SCM_DEBUGGINGP: * debug.h (scm_debug_mode_p, scm_debug_mode, SCM_DEBUGGINGP), eval.c (scm_debug_mode_p): Deprecated scm_debug_mode and SCM_DEBUGGINGP. Provided scm_debug_mode_p instead, to have one single interface that also matches the naming conventions. Probably scm_debug_mode_p should be part of the private interface anyway. * debug.h (scm_debug_mode_p), backtrace.c (display_error_body), eval.c (SCM_APPLY, scm_trampoline_0, scm_trampoline_1, scm_trampoline_2): Change uses of scm_debug_mode or SCM_DEBUGGINGP to scm_debug_mode_p. Deprecate direct access to scm_ceval, scm_deval and scm_ceval_ptr: * eval.h (scm_ceval, scm_deval, scm_ceval_ptr), debug.h (scm_ceval_ptr): Deprecated. Moved declaration of scm_ceval_ptr from debug.h to eval.h. * debug.h (SCM_RESET_DEBUG_MODE): Don't access scm_ceval_ptr any more, just leave it with setting scm_debug_mode_p, which is equivalent for practical purposes. * deprecated.h (SCM_XEVAL, SCM_XEVALCAR): Call scm_i_eval_x instead of *scm_ceval_ptr. Leave all evaluating to scm_i_eval_x. * gdbint.c (gdb_eval): Call scm_i_eval_x instead of scm_ceval. * eval.c (ceval, deval, scm_ceval, scm_deval): Made scm_ceval static and renamed it to ceval throughout. Provide a new exported but deprecated function scm_ceval as a wrapper for backwards compatibility. The same is done for the deval/scm_deval pair of functions. * eval.c (CEVAL, SCM_CEVAL): Renamed SCM_CEVAL to CEVAL throughout. Defined CEVAL to ceval or deval, based on compilation phase. * eval.c (SCM_XEVAL, SCM_XEVALCAR): Dispatch on scm_debug_mode_p to ceval and deval instead of calling *scm_ceval_ptr. * eval.c (dispatching_eval): New deprecated static function. * eval.c (scm_ceval_ptr): Initialized to dispatching_eval in order to emulate its old behaviour as closely as possible. Change the evaluator such that only expressions for which pair? is true are passed to CEVAL, and such that all other expressions are evaluated outside of CEVAL: * eval.c (EVAL): New, provided in analogy to EVALCAR. Evaluate an expression that is assumed to be memoized already. All but expressions of the form '(<form> <form> ...)' are evaluated inline without calling an evaluator. * eval.c (SCM_XEVAL, SCM_XEVALCAR, EVALCAR): Evaluate all but expressions of the form '(<form> <form> ...)' inline without calling an evaluator. * eval.c (scm_i_eval_x, scm_i_eval, scm_ceval, scm_deval): Handle the special case of unmemoized symbols passed on the top level. * eval.c (CEVAL): Change calls to CEVAL to EVAL, except where it is known that the expression passed to CEVAL is of the form '(<form> <form> ...)'. Remove handling of the tc7-objects, since now it is known that the input expression of CEVAL is a pair.
2004-03-29 * eval.c (is_self_quoting_p): New static function.Dirk Herrmann1-10/+18
(scm_m_quote): Use is_self_quoting_p. (copy_tree): Corrected typo in comment.
2004-03-28* eval.c (s_scm_copy_tree): idem.Han-Wen Nienhuys1-1/+1
* list.c (s_scm_filter): remove "pointer" from doc string.
2004-03-24 * libguile/eval.c: Separated some definitions relevant for executionDirk Herrmann1-91/+216
from the memoization part of the file. (copy_tree): New static function (scm_copy_tree): Rewritten to fix two kinds or bugs: First, cyclic structures are detected now and will lead to an exception instead of forcing guile to run in an endless loop, using up all the system's memory. Second, arrays in the cdr of an improper list are now copied. See the new test cases in eval.test. * test-suite/tests/eval.test: Added tests which reflect the recent fixes to copy-tree.
2004-03-21(scm_ceval, scm_deval): Explicitely evaluate ports to themselves.Marius Vollmer1-1/+2
Thanks to Han-Wen Nienhuys!
2004-01-22(m_expand_body): remove stray variable new_body.Han-Wen Nienhuys1-1/+1
2004-01-22(m_expand_body): Rewrite the expression in place (by overwritingMarius Vollmer1-11/+12
FORMS) also when a letrec is constructed, not only when no definitions are found. Do not return rewritten expression to emphasize the in-place rewriting. Changed all users.
2003-11-21 * eval.c (s_bad_define): New static identifier.Dirk Herrmann1-86/+49
(m_body): Fixed comment. (scm_m_define): Don't generate memoized code for definitions that are not on the top level. As a consequence, no memoized code at all is generated for definitions any more: Top level definitions are executed immediately during memoization and internal definitions are handled separately in m_expand_body. (scm_unmemocopy, unmemocopy): Removed code for unmemoizing definitions. Consequently, there is no unmemoizing code any more that might modify the environment. Thus, the old scm_unmemocopy is removed and the old unmemocopy is renamed to scm_unmemocopy. (SCM_CEVAL): The SCM_IM_DEFINE keyword can no longer occur in memoized code. Call EVALCAR for continuations. Prefer !SCM_NULLP over SCM_NIMP in places, where the argument is known to be part of a proper list.
2003-11-18* print.c (scm_iprin1): Handle fractions.Marius Vollmer1-3/+19
* objects.h (scm_class_fraction): New. * objects.c (scm_class_fraction): New. (scm_class_of): Handle fractions. * hash.c (scm_hasher): Handle fractions. * numbers.c: New code for handling fraction all over the place. (scm_odd_p, scm_even_p): Handle inexact integers. (scm_rational_p): New function, same as scm_real_p. (scm_round_number, scm_truncate_number, scm_ceiling, scm_floor): New exact functions that replace the inexact 'dsubr' implementations. (scm_numerator, scm_denominator): New. * numbers.h (SCM_NUMP): Recognize fractions. (SCM_FRACTIONP, SCM_SLOPPY_FRACTIONP, SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR, SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR, SCM_FRACTION_REDUCED_BIT, SCM_FRACTION_REDUCED_SET, SCM_FRACTION_REDUCED_CLEAR, SCM_FRACTION_REDUCED): New. (scm_floor, scm_ceiling, scm_truncate_number, scm_round_number): New prototypes. (scm_make_ratio, scm_rationalize, scm_numerator, scm_denominator, scm_rational_p): New prototypes. (scm_i_dbl2num, scm_i_fraction2double, scm_i_fraction_equalp, scm_i_print_fraction): New prototypes. * goops.c (create_standard_classes): Create "<fraction>" class. * gc-mark.c (scm_gc_mark_dependencies): Handle fractions. * gc-card.c (scm_i_sweep_card): Include scm_tc16_fraction as a case in the switch, but do nothing for now. * eval.c (SCM_CEVAL, SCM_APPLY, call_dsubr_1): Convert fractions to doubles when calling 'dsubr' functions. * eq.c (scm_eqv_p, scm_equal_p): Handle fractions.
2003-11-17(scm_m_generalized_set_x): Macroexpand the target when itMarius Vollmer1-2/+3
is a list. This allows (@ ...) to work with set!. (scm_m_generalized_set_x): Use ASSERT_SYNTAX_2 instead of SCM_ASSYNT.
2003-11-17(scm_m_generalized_set_x): Macroexpand the target when it is a list.Marius Vollmer1-11/+31
This allows (@ ...) to work with set!.
2003-11-16 * eval.c (scm_m_letstar): Create memoized code in place toDirk Herrmann1-6/+22
minimize consing.
2003-11-16 * eval.c (s_splicing): Commented and reformulated.Dirk Herrmann1-53/+140
(lookup_global_symbol, lookup_symbol): New static functions. (s_test, s_bindings, s_duplicate_bindings, s_variable): Removed. (try_macro_lookup, literal_p): Use lookup_symbol instead of creating a temporary pair for scm_lookupcar. (scm_unmemocar, unmemocar): Renamed scm_unmemocar to unmemocar, created deprecated wrapper function scm_unmemocar. (SCM_VALIDATE_NON_EMPTY_COMBINATION, scm_sym_else, scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame, scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace, f_apply, undefineds, sym_three_question_marks): Moved around without modifications. * eval.c, eval.h (scm_macroexp, scm_unmemocar): Deprecated.
2003-11-15 * eval.c (try_macro_lookup, expand_user_macros, is_system_macro_p,Dirk Herrmann1-210/+210
m_expand_body, scm_m_expand_body): Grouped together with m_body. No further modifications.
2003-11-15 * libguile/eval.c (s_mixed_body_forms): New static identifier.Dirk Herrmann1-45/+188
(canonicalize_define, scm_m_define): The check for a bad expression is performed in canonicalize_define now. (try_macro_lookup, expand_user_macros, is_system_macro_p): New static helper functions for m_expand_body. (m_expand_body): Use ASSERT_SYNTAX to signal syntax errors. Only expand user defined macros. Fixed handling of the definition/ expression boundary. Fixed handling of definitions grouped with 'begin. Use canonicalize_define to expand definitions. * test-suite/tests/syntax.test: Tests that check for the correct handling of internal defines with begin work now.
2003-11-09 * eval.c (scm_m_body, m_body, scm_m_lambda, memoize_named_let,Dirk Herrmann1-10/+10
scm_m_let, scm_m_letrec, m_expand_body): Renamed static function scm_m_body to m_body.
2003-11-09 * eval.c, eval.h (scm_m_expand_body, m_expand_body): DeprecatedDirk Herrmann1-5/+19
public use of scm_m_expand_body in eval.h. In eval.c, renamed scm_m_expand_body to m_expand_body and made it static. Added deprecated wrapper scm_m_expand_body. (scm_eval_body, SCM_CEVAL, SCM_APPLY): Use m_expand_body instead of scm_m_expand_body.
2003-11-08 * libguile/eval.c (s_missing_body_expression): New static identifier.Dirk Herrmann1-3/+10
(s_body): Removed. (scm_m_expand_body): Fixed core dump when passing a body with defines, but without expressions (see additions to syntax.test). Use ASSERT_SYNTAX to signal syntax errors. * test-suite/tests/syntax.test (exception:missing-body-expr): New. Renamed section 'define' to 'top-level define' and added a new section 'internal define' with some tests.
2003-11-02 * eval.c (canonicalize_define): New static helper function.Dirk Herrmann1-9/+29
(memoize_define, canonicalize_define): Extract handling of function currying to canonicalize_define.