Ticket #14 (closed defect)
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
Change History
Note: See
TracTickets for help on using
tickets.