[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: [Gcl-devel] Can't Pretty-print?

**From**: |
Martin Rubey |

**Subject**: |
Re: [Gcl-devel] Can't Pretty-print? |

**Date**: |
Thu, 14 Feb 2002 16:56:23 +0100 (MEZ) |

I'm sorry, but I do not quite understand your reply. What is the
pretty-print stack?
When I debug the code, everything works fine until I reach the push the
sixth time. Then, when I ask for new-cartesian, I get the error message.
Note that
(cartesian (list '((a b) (c)) '(((a) (b)) ((c) d))))
works all right. I would expect that gcl doesn't care whether the elements
of the sets passed to cartesian are atoms or elements...
(I'm a newbie, please be patient with me)
Redefining Q_SIZE would mean recompiling, wouldn't it?
Martin
>* > (cartesian (list '((a b) (c)) '( ((a) (b)) ((c) (d)))))*
>* >*
>* > (defun cartesian (sets)*
>* > "Returns the Cartesian product of a list of sets*
>* > Example:*
>* > (CARTESIAN '((A B) (C D) (E F)))*
>* > ;=> ((B C F) (B C E) (B D F) (B D E) (A C F) (A C E) (A D F) (A D*
>* > E))*
>* > Non-recursive version.*
>* > "*
>* > (let ((cartesian (list nil)))*
>* > (dolist (set (reverse sets)) ; reverse is only for esthetics*
>* > (let ((new-cartesian nil))*
>* > (dolist (elmt set)*
>* > (dolist (cart cartesian)*
>* > (push (cons elmt cart) new-cartesian)))*
>* > (setf cartesian new-cartesian)))*
>* > cartesian))*
>
>* The code as written is highly nested, and overflows the default*
>* "pretty-print" stack in gcl. You can work around, at least for your*
>* example, by doubling the Q_SIZE and IS_SIZE #defines in h/notcomp.h.*
>
>* By default, these are 128 and 256 respectively. Anyone have a good*
>* idea as to what they should be in the default distribution?*