[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?