[gambit-list] "Number of arguments exceeds implementation limit" error

Bill Richter richter at math.northwestern.edu
Sun Sep 3 13:13:14 EDT 2006


Marc, I got the error message above.  I assume I could fix this by
recompiling gambit, but beta 17 failed make check (never heard from
anyone on that bug report), and I no longer have the sources for beta
15, which is what I'm using.  But maybe you can give me a Scheme tip
to fix this problem of mine without recompiling.  So

I've written a Sudoku solver that's 1500 lines long, and it
bombed on a puzzle after calculating for many hours, and here was my
error message: 

Check for Solved Cells*** ERROR IN #<procedure #2>, "OrChain.scm"@327.23 -- Number of arguments exceeds implementation limit
(append
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((2 4)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5) (9 5)) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5) (8 5) (9...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((2 4)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5) (8 5) (9...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 '(((((1 1)) (3 3) ((1 3)) (1 1) ((1 5) (1 6))) (1 4 (3 5)) (((7 5)) (4 4) (...
 ...)

line 327 is here: 

(apply append
       (filter-map (lambda (or-chain)
                     (let* ([xUyV (OrStatement or-chain)]
                            [x (first xUyV)] [U (second xUyV)] 
                            [y (third xUyV)] [V (fourth xUyV)]
                            [mult-block (first or-chain)])
                       (and 
                        (not (number? (first mult-block)))
                        (= (length U) 1)
                        (filter-map (lambda (conj/ALS)
                                      (let* ([aPbQ (OrStatement (list conj/ALS))]
                                             [a (first aPbQ)] [P (second aPbQ)] 
                                             [b (third aPbQ)] [Q (fourth aPbQ)])
                                        (and (not (= b x))
                                             (set-equal? Q U)
                                             (cons 
                                              (cons P (cons (list a b) mult-block)) 
                                              (rest or-chain)))))
                                    ConjLoopers))))
                   or-chains))


my `filter-map' is a combination of map with the HtDP function
`filter'.  So for some of the elements of the list `or-chains', I
produce a list, and then I append the whole collection of lists.  So I
think what's happening here is that the list `or-chains' is too long.

BTW I've been posting a lot of Mike Mepham's Sudoku newsgroup
http://www.sudoku.org.uk/cgi-bin/discus/discus.cgi?pg=topics Mostly
I've been trying to teach these Sudoku hotshots the meaning of words
like logic & axiom.  I'm not having much more success than I had a few
years ago on comp.lang.scheme trying to teach the CS profs how one
constructs mathematical function between two sets.



More information about the Gambit-list mailing list