id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,planetversion,pltversion
14,eq/equal on multiple args,dherman,dherman,"Danny Yoo wrote:

> Hi Dave,
> 
> I've repaired memoize.ss so that if there are multiple arguments, and should be eq?, then the elements in the arg list are eq-compared.  As a quick brush over it, I defined my own assoc/inner-eq and parameterized the four memoizing macros over their respective 'assocs'. 
> 
> 
> Here's a hastily-written test case: 

{{{
  (define eq-vs-equal-tests
    (make-test-suite
     ""eq-vs-equal for multiple args""
     (make-test-case
      ""simple test""
      (let ([f (memo-lambda (x y)
                            (increment!)
                            (+ (string-length x) (string-length y)))]
            [hello ""hello""]
            [world ""world""])
        (parameterize ([number-of-runs 0])
          (f (string-append ""h"" ""ello"")
             (string-append ""w"" ""orld""))
          (f (string-append ""he"" ""llo"")
             (string-append ""wo"" ""rld""))
          (with-assertion-info (['ran-twice ""did not run exactly twice""])
                               (unless (= (number-of-runs) 2)
                                 (fail-assertion))))
        (parameterize ([number-of-runs 0])
          (f hello world)
          (f hello world)
          (with-assertion-info (['ran-once ""did not run exactly once""])
                               (unless (= (number-of-runs) 1)
                                 (fail-assertion))))))))
}}}


> My apologies for the test case messiness: I wanted to sleep.  *grin*
> 
> 
> 
> Best of wishes!
",defect,closed,major,,dherman/memoize.plt,,,,,
