#include "libguile/deprecation.h"
#include "libguile/validate.h"
+#include "libguile/programs.h"
#include "libguile/macros.h"
#include "libguile/private-options.h"
|| scm_is_false (scm_printer_apply (SCM_PRINT_CLOSURE,
macro, port, pstate)))
{
- if (!SCM_CLOSUREP (code))
+ if (!SCM_CLOSUREP (code) && !SCM_PROGRAM_P (code))
scm_puts ("#<primitive-", port);
else
scm_puts ("#<", port);
"Return the transformer of the macro @var{m}.")
#define FUNC_NAME s_scm_macro_transformer
{
+ SCM data;
+
SCM_VALIDATE_SMOB (1, m, macro);
- return ((SCM_CLOSUREP (SCM_PACK (SCM_SMOB_DATA (m)))) ?
- SCM_PACK(SCM_SMOB_DATA (m)) : SCM_BOOL_F);
+ data = SCM_PACK (SCM_SMOB_DATA (m));
+
+ if (SCM_CLOSUREP (data) || SCM_PROGRAM_P (data))
+ return data;
+ else
+ return SCM_BOOL_F;
}
#undef FUNC_NAME