On Wed, 18 Apr 2001, Dirk Herrmann wrote:

> > Isn't there a `break' or `return' or something missing after the first
> > case?  I'm not sure about the correct fix, because I don't understand
> > all the procedure types in Guile yet.
> 
> You are right:  for the case of closures the code should be
>   if (SCM_NULLP (SCM_CAR (SCM_CODE (obj))))
>     return SCM_BOOL_T;
>   else
>     return SCM_BOOL_F;
> or shorter
>   return SCM_BOOL (SCM_NULLP (SCM_CAR (SCM_CODE (obj))));
> For the other cases it is OK.

Well, not quite.  I forgot that (lambda args ...) should also considered a
thunk.  However, I hope that the problem is fixed now.

Since I had to figure out about the representation of formal arguments in
a closure object, I also took the freedom to replace occurrences of
  SCM_CAR (SCM_CODE (obj))
throughout guile by a new SCM_CLOSURE_FORMALS macro, which does the same
thing but is more explicit.  Further, printing of macros is now done
within macros.c, and no longer in print.c...

Best regards,
Dirk Herrmann


_______________________________________________
Bug-guile mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-guile

Reply via email to