Skip to content

Commit db73181

Browse files
committed
fix an equal? into an alpha equivalence test
closes racket#99
1 parent 30eefb5 commit db73181

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

redex-lib/redex/private/judgment-form.rkt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
(require 'mode-utils
129129
(for-syntax 'mode-utils))
130130

131-
(define-for-syntax (generate-binding-constraints names names/ellipses bindings syn-err-name)
131+
(define-for-syntax (generate-binding-constraints lang names names/ellipses bindings syn-err-name)
132132
(define (id/depth stx)
133133
(syntax-case stx ()
134134
[(s (... ...))
@@ -146,7 +146,7 @@
146146
(let ([b-id/depth (id/depth b)]
147147
[n-id/depth (id/depth w/e)])
148148
(if (= (id/depth-depth b-id/depth) (id/depth-depth n-id/depth))
149-
(cons #`(equal? #,x (term #,b)) cs)
149+
(cons #`(alpha-equivalent? #,lang #,x (term #,b)) cs)
150150
(raise-ellipsis-depth-error
151151
syn-err-name
152152
(id/depth-id n-id/depth) (id/depth-depth n-id/depth)
@@ -197,7 +197,8 @@
197197
#'pat-stx)]
198198
[lang-stx rt-lang])
199199
(define-values (binding-constraints temporaries env+)
200-
(generate-binding-constraints (syntax->list #'(names ...))
200+
(generate-binding-constraints rt-lang
201+
(syntax->list #'(names ...))
201202
(syntax->list #'(names/ellipses ...))
202203
env
203204
orig-name))
@@ -297,7 +298,7 @@
297298
(syntax->list #'names)
298299
(syntax->list #'names/ellipses))))
299300
(define-values (binding-constraints temporaries env+)
300-
(generate-binding-constraints output-names output-names/ellipses env orig-name))
301+
(generate-binding-constraints rt-lang output-names output-names/ellipses env orig-name))
301302
(define rest-body
302303
(loop rest-clauses #`(list (term #,output-pattern) #,to-not-be-in) env+))
303304
(define call

redex-test/redex/tests/tl-judgment-form.rkt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,33 @@
730730

731731
(test (judgment-holds (J (1) any) any) (list 1)))
732732

733+
(let ()
734+
(define-language L
735+
(x ::= variable-not-otherwise-mentioned)
736+
(e ::= x (λ (x) e))
737+
#:binding-forms
738+
(λ (x) e #:refers-to x))
739+
740+
(define-judgment-form L
741+
#:mode (equal1 I I)
742+
#:contract (equal1 e e)
743+
744+
[(where (e e) (e_1 e_2))
745+
-----------------
746+
(equal1 e_1 e_2)])
747+
748+
(define-judgment-form L
749+
#:mode (equal2 I I)
750+
#:contract (equal2 e e)
751+
752+
[(where e e_1)
753+
(where e e_2)
754+
-----------------
755+
(equal2 e_1 e_2)])
756+
757+
(test (judgment-holds (equal1 (λ (x1) x1) (λ (x2) x2))) #t)
758+
(test (judgment-holds (equal2 (λ (x1) x1) (λ (x2) x2))) #t))
759+
733760
(parameterize ([current-namespace (make-base-namespace)])
734761
(eval '(require errortrace))
735762
(eval '(require redex/reduction-semantics))

0 commit comments

Comments
 (0)