From 230fb91f387cd5354fb4f269db4d22a2c0db9bc1 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 6 Oct 2014 17:06:03 -0500 Subject: [PATCH] =?UTF-8?q?fix=20rendering=20of=20metafunctions=20that=20u?= =?UTF-8?q?se=20=E2=88=AA,=20=E2=88=A8,=20etc=20in=20the=20range=20contrac?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../redex-lib/redex/private/judgment-form.rkt | 24 +++++++++++++----- .../redex/private/reduction-semantics.rkt | 11 +++++--- .../redex-pict-lib/redex/private/pict.rkt | 21 ++++++++++++--- .../redex-test/redex/tests/bitmap-test.rkt | 1 + .../bmps-macosx/metafunctions-multiple.png | Bin 15826 -> 17917 bytes 5 files changed, 43 insertions(+), 14 deletions(-) diff --git a/pkgs/redex-pkgs/redex-lib/redex/private/judgment-form.rkt b/pkgs/redex-pkgs/redex-lib/redex/private/judgment-form.rkt index 6eee4489ed..ae731ba84e 100644 --- a/pkgs/redex-pkgs/redex-lib/redex/private/judgment-form.rkt +++ b/pkgs/redex-pkgs/redex-lib/redex/private/judgment-form.rkt @@ -444,7 +444,9 @@ (begin (unless (identifier? #'lang) (raise-syntax-error #f "expected an identifier in the language position" stx #'lang)) - (define-values (contract-name dom-ctcs pre-condition codom-contracts post-condition pats) + (define-values (contract-name dom-ctcs pre-condition + codom-contracts codom-seps post-condition + pats) (split-out-contract stx (syntax-e #'def-form-id) #'body #t)) (with-syntax* ([((name trms ...) rest ...) (car pats)] [(mode-stx ...) #`(#:mode (name I))] @@ -462,7 +464,8 @@ ;; initial test determines if a contract is specified or not (cond [(pair? (syntax-e (car (syntax->list rest)))) - (values #f #f #f (list #'any) #f (check-clauses stx syn-error-name (syntax->list rest) relation?))] + (values #f #f #f (list #'any) '() #f + (check-clauses stx syn-error-name (syntax->list rest) relation?))] [else (syntax-case rest () [(id separator more ...) @@ -475,7 +478,8 @@ (raise-syntax-error syn-error-name "expected clause definitions to follow domain contract" stx)) - (values #'id contract #f (list #'any) #f (check-clauses stx syn-error-name clauses #t)))] + (values #'id contract #f (list #'any) '() #f + (check-clauses stx syn-error-name clauses #t)))] [else (unless (eq? ': (syntax-e #'separator)) (raise-syntax-error syn-error-name "expected a colon to follow the meta-function's name" stx #'separator)) @@ -485,10 +489,12 @@ [(null? more) (raise-syntax-error syn-error-name "expected an ->" stx)] [(eq? (syntax-e (car more)) '->) - (define-values (raw-clauses rev-codomains pre-condition post-condition) + (define-values (raw-clauses rev-codomains rev-codomain-separators + pre-condition post-condition) (let loop ([prev (car more)] [more (cdr more)] - [codomains '()]) + [codomains '()] + [codomain-separators '()]) (cond [(null? more) (raise-syntax-error syn-error-name @@ -497,14 +503,15 @@ (define after-this-one (cdr more)) (cond [(null? after-this-one) - (values null (cons (car more) codomains) #t #t)] + (values null (cons (car more) codomains) codomain-separators #t #t)] [else (define kwd (cadr more)) (cond [(member (syntax-e kwd) '(or ∨ ∪)) (loop kwd (cddr more) - (cons (car more) codomains))] + (cons (car more) codomains) + (cons (syntax-e kwd) codomain-separators))] [(and (not relation?) (or (equal? (syntax-e kwd) '#:pre) (equal? (syntax-e kwd) '#:post))) @@ -534,11 +541,13 @@ (set! post (caddr more))]) (values remainder (cons (car more) codomains) + codomain-separators pre post)] [else (values (cdr more) (cons (car more) codomains) + codomain-separators #t #t)])])]))) (let ([doms (reverse dom-pats)] @@ -547,6 +556,7 @@ doms (if relation? #f pre-condition) (reverse rev-codomains) + (reverse rev-codomain-separators) (if relation? #f post-condition) clauses))] [else diff --git a/pkgs/redex-pkgs/redex-lib/redex/private/reduction-semantics.rkt b/pkgs/redex-pkgs/redex-lib/redex/private/reduction-semantics.rkt index e066e66db0..51ff1473b8 100644 --- a/pkgs/redex-pkgs/redex-lib/redex/private/reduction-semantics.rkt +++ b/pkgs/redex-pkgs/redex-lib/redex/private/reduction-semantics.rkt @@ -1192,7 +1192,9 @@ (raise-syntax-error syn-error-name "expected a previously defined metafunction" orig-stx prev-metafunction)))) - (let*-values ([(contract-name dom-ctcs pre-condition codom-contracts post-condition pats) + (let*-values ([(contract-name dom-ctcs pre-condition + codom-contracts codomain-separators post-condition + pats) (split-out-contract orig-stx syn-error-name #'rest #f)] [(name _) (defined-name (list contract-name) pats orig-stx)]) (when (and prev-metafunction (eq? (syntax-e #'name) (syntax-e prev-metafunction))) @@ -1217,6 +1219,7 @@ (list pre-condition) #f) #,codom-contracts + '#,codomain-separators #,(if post-condition (list post-condition) #f) @@ -1265,7 +1268,7 @@ [(_ orig-stx lang prev-metafunction-stx name name-predicate dom-ctcs-stx pre-condition-stx - codom-contracts-stx post-condition-stx + codom-contracts-stx codomain-separators-stx post-condition-stx pats-stx syn-error-name) (let () (define (condition-or-false s) @@ -1279,6 +1282,7 @@ (define dom-ctcs (syntax-e #'dom-ctcs-stx)) (define pre-condition (condition-or-false #'pre-condition-stx)) (define codom-contracts (syntax-e #'codom-contracts-stx)) + (define codomain-separators (syntax-e #'codomain-separators-stx)) (define post-condition (condition-or-false #'post-condition-stx)) (define pats (syntax-e #'pats-stx)) (define syn-error-name (syntax-e #'syn-error-name)) @@ -1417,7 +1421,8 @@ #,(with-syntax ([(dom-ctc ...) dom-ctcs]) #`(list (to-lw dom-ctc) ...)) #,(with-syntax ([(codom-ctc ...) codom-contracts]) - #`(list (to-lw codom-ctc) ...))) + #`(list (to-lw codom-ctc) ...)) + #,codomain-separators) #'#f) ;; body of mf diff --git a/pkgs/redex-pkgs/redex-pict-lib/redex/private/pict.rkt b/pkgs/redex-pkgs/redex-pict-lib/redex/private/pict.rkt index da931fc935..c9fe69cca3 100644 --- a/pkgs/redex-pkgs/redex-pict-lib/redex/private/pict.rkt +++ b/pkgs/redex-pkgs/redex-pict-lib/redex/private/pict.rkt @@ -953,11 +953,13 @@ [(and contract? lws) (define doms (list-ref lws 0)) (define rngs (list-ref lws 1)) + (define separators (list-ref lws 2)) (render-metafunction-contract (metafunc-proc-lang (metafunction-proc mf)) (metafunc-proc-name (metafunction-proc mf)) doms - rngs)] + rngs + separators)] [else #f]))) (define all-eqns (map (λ (mf) (list-ref (metafunc-proc-pict-info (metafunction-proc mf)) 1)) mfs)) (define all-lhss @@ -1141,14 +1143,25 @@ null (list sc)))]))))])) -(define (render-metafunction-contract lang name doms rngs) +(define (render-metafunction-contract lang name doms rngs separators) (hbl-append (basic-text (format "~a" name) (metafunction-style)) (basic-text " : " (default-style)) (apply hbl-append (add-between (map (λ (x) (lw->pict lang x)) doms) (basic-text " " (default-style)))) (basic-text " → " (default-style)) - (apply hbl-append (add-between (map (λ (x) (lw->pict lang x)) rngs) - (basic-text " " (default-style)))))) + (apply hbl-append + (add-between (interleave-ctc-separators + (map (λ (x) (lw->pict lang x)) rngs) + (map (λ (x) (basic-text (format "~a" x) (default-style))) + separators)) + (basic-text " " (default-style)))))) + +(define (interleave-ctc-separators eles betweens) + (cond + [(null? betweens) eles] + [else (list* (car eles) + (car betweens) + (interleave-ctc-separators (cdr eles) (cdr betweens)))])) (define (metafunction-call name an-lw) (struct-copy lw an-lw diff --git a/pkgs/redex-pkgs/redex-test/redex/tests/bitmap-test.rkt b/pkgs/redex-pkgs/redex-test/redex/tests/bitmap-test.rkt index e1a45d6ada..b0000b3d5d 100644 --- a/pkgs/redex-pkgs/redex-test/redex/tests/bitmap-test.rkt +++ b/pkgs/redex-pkgs/redex-test/redex/tests/bitmap-test.rkt @@ -148,6 +148,7 @@ "metafunction-judgment-holds.png")) (define-metafunction lang + T : any any -> 1 ∪ (2 2) ∨ 1234 [(T x y) 1 (side-condition (not (eq? (term x) (term y)))) diff --git a/pkgs/redex-pkgs/redex-test/redex/tests/bmps-macosx/metafunctions-multiple.png b/pkgs/redex-pkgs/redex-test/redex/tests/bmps-macosx/metafunctions-multiple.png index d3d3003993b61175e905d739bab4359b24a32985..d89e0455e208b9cb230ede0052c248830046fe72 100644 GIT binary patch literal 17917 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 z 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 LtDnm{r-UW|o<5mw literal 15826 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