Ticket #14 (closed defect)

Opened 6 years ago

Last modified 6 years ago

eq/equal on multiple args

Reported by: dherman Owned by: dherman
Priority: major Milestone:
Component: dherman/memoize.plt Keywords:
Cc: Version:
Racket Version:

Description

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!

Attachments

memoize.ss Download (4.5 KB) - added by dherman 6 years ago.

Change History

Changed 6 years ago by dherman

Changed 6 years ago by dherman

  • status changed from new to closed

Fixed in 3:1. Thanks, Danny.

Note: See TracTickets for help on using tickets.