diff --git a/runtime.c b/runtime.c index b17e3b14..efe39e3b 100644 --- a/runtime.c +++ b/runtime.c @@ -1350,12 +1350,15 @@ object apply(object cont, object func, object args){ case cons_tag: { - // TODO: would be better to compare directly against symbol here, + // TODO: would be better to compare directly against symbols here, // but need a way of looking up this symbol ahead of time. // maybe a libinit() or such is required. if (strncmp(((symbol)car(func))->pname, "primitive", 10) == 0) { make_cons(c, cadr(func), args); ((closure)__glo_eval)->fn(3, __glo_eval, cont, &c, nil); + } else if (strncmp(((symbol)car(func))->pname, "procedure", 10) == 0) { + make_cons(c, func, args); + ((closure)__glo_eval)->fn(3, __glo_eval, cont, &c, nil); } else { make_cons(c, func, args); Cyc_rt_raise2("Unable to evaluate: ", &c);