File tree Expand file tree Collapse file tree 2 files changed +32
-4
lines changed Expand file tree Collapse file tree 2 files changed +32
-4
lines changed Original file line number Diff line number Diff line change 128
128
(require 'mode-utils
129
129
(for-syntax 'mode-utils ))
130
130
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)
132
132
(define (id/depth stx)
133
133
(syntax-case stx ()
134
134
[(s (... ... ))
146
146
(let ([b-id/depth (id/depth b)]
147
147
[n-id/depth (id/depth w/e)])
148
148
(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)
150
150
(raise-ellipsis-depth-error
151
151
syn-err-name
152
152
(id/depth-id n-id/depth) (id/depth-depth n-id/depth)
197
197
#'pat-stx )]
198
198
[lang-stx rt-lang])
199
199
(define-values (binding-constraints temporaries env+)
200
- (generate-binding-constraints (syntax->list #'(names ... ))
200
+ (generate-binding-constraints rt-lang
201
+ (syntax->list #'(names ... ))
201
202
(syntax->list #'(names/ellipses ... ))
202
203
env
203
204
orig-name))
297
298
(syntax->list #'names )
298
299
(syntax->list #'names/ellipses ))))
299
300
(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))
301
302
(define rest-body
302
303
(loop rest-clauses #`(list (term #,output-pattern) #,to-not-be-in) env+))
303
304
(define call
Original file line number Diff line number Diff line change 730
730
731
731
(test (judgment-holds (J (1 ) any ) any ) (list 1 )))
732
732
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
+
733
760
(parameterize ([current-namespace (make-base-namespace)])
734
761
(eval '(require errortrace))
735
762
(eval '(require redex/reduction-semantics))
You can’t perform that action at this time.
0 commit comments