i was writing a unit test which had something analogous to the following: (check-equal? #rx"a" #rx"a") => raises exn:test:check
so i checked and sure enough: (equal? #rx"a" #rx"a) => #f which led me to look for a regexp-equal? so i could do (check regexp-equal? #rx"a" #rx"a") that doesn't exist, so i wrote one: (define (regexp-equal? a b) (and (and (regexp? a) (regexp? b)) (or (and (pregexp? a) (pregexp? b)) (and (not (pregexp? a)) (not (pregexp? b)))) (equal? (object-name a) (object-name b)))) why not just have (equal? #rx"a" #rx"a") => #t ? anticipated objection: "what should equal? mean for two regexps?" it should mean that the patterns are identical, totally ignoring that two non-identical patterns might match exactly the same set, like #rx"(a|b)" and #rx"(b|a)". i see in the docs that there is an internal regexp value. if those are what i think they are, i propose equal? just compares those for regexes.
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users