From 3458175b0c0ff5b4d547fe92321e3272c801e98b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Thu, 10 Nov 2016 17:57:12 +0100 Subject: [PATCH] Cleanup --- test/test-traversal-1.rkt | 2 +- test/test-traversal-2.rkt | 2 +- test/traversal-util.rkt | 2 +- traversal.hl.rkt | 83 +++++++++++++++++++-------------------- 4 files changed, 44 insertions(+), 45 deletions(-) diff --git a/test/test-traversal-1.rkt b/test/test-traversal-1.rkt index 2775468..54af2d9 100644 --- a/test/test-traversal-1.rkt +++ b/test/test-traversal-1.rkt @@ -1,6 +1,6 @@ #lang type-expander -(require "traversal-util.rkt" ;"../traversal.hl.rkt" +(require "traversal-util.rkt" "ck.rkt") (define-type Foo (Listof String)) diff --git a/test/test-traversal-2.rkt b/test/test-traversal-2.rkt index 8d3296f..d990c25 100644 --- a/test/test-traversal-2.rkt +++ b/test/test-traversal-2.rkt @@ -1,6 +1,6 @@ #lang typed/racket -(require "traversal-util.rkt" ;"../traversal.hl.rkt" +(require "traversal-util.rkt" type-expander phc-adt "ck.rkt" diff --git a/test/traversal-util.rkt b/test/traversal-util.rkt index 7aef472..62cef73 100644 --- a/test/traversal-util.rkt +++ b/test/traversal-util.rkt @@ -1,6 +1,6 @@ #lang typed/racket (require (for-syntax syntax/parse - syntax/parse/experimental/template + backport-template-pr1514/experimental/template type-expander/expander) "../traversal.hl.rkt") diff --git a/traversal.hl.rkt b/traversal.hl.rkt index 2ffb573..e30c789 100644 --- a/traversal.hl.rkt +++ b/traversal.hl.rkt @@ -149,16 +149,22 @@ not expressed syntactically using the @racket[Foo] identifier. @; cases. -@CHUNK[ - (begin-for-syntax - (define-template-metafunction (replace-in-type stx) - (syntax-case stx () - [(_ _whole-type [_type-to-replaceᵢ _Tᵢ] …) - #`(#,(syntax-local-template-metafunction-introduce - (fold-type #'(_whole-type _type-to-replaceᵢ …))) _Tᵢ …)])))] +@CHUNK[ + (define-template-metafunction (replace-in-type stx) + (syntax-case stx () + [(_ _whole-type [_type-to-replaceᵢ _Tᵢ] …) + #`(#,(syntax-local-template-metafunction-introduce + (fold-τ #'(_whole-type _type-to-replaceᵢ …))) _Tᵢ …)]))] -@CHUNK[ - (define-for-syntax fold-type +@CHUNK[ + (define-template-metafunction (∀-replace-in-type stx) + (syntax-case stx () + [(_ _whole-type _type-to-replaceᵢ …) + (syntax-local-template-metafunction-introduce + (fold-τ #'(_whole-type _type-to-replaceᵢ …)))]))] + +@CHUNK[ + (define fold-τ (syntax-parser [(_whole-type:type _type-to-replaceᵢ:type …) #:with rec-args #'([_type-to-replaceᵢ _Tᵢ] …) @@ -180,7 +186,7 @@ not expressed syntactically using the @racket[Foo] identifier. (define-syntax-rule (cached [base cache defs key] . body) (begin (unless (and cache defs) - (error "fold-type and fold-f must be called within with-folds")) + (error "fold-τ and fold-f must be called within with-folds")) (if (dict-has-key? cache key) (dict-ref cache key) (let ([base #`#,(gensym 'base)]) @@ -189,17 +195,23 @@ not expressed syntactically using the @racket[Foo] identifier. (set-box! defs `([,base . ,result] . ,(unbox defs))) base))))))] -@CHUNK[ - (begin-for-syntax - (define-template-metafunction (replace-in-instance stx) - (syntax-case stx () - [(_ _whole-type [_type-to-replaceᵢ _predicateᵢ _updateᵢ] …) - #`(#,(syntax-local-template-metafunction-introduce - (fold-f #'(_whole-type _type-to-replaceᵢ …))) - {?@ _predicateᵢ _updateᵢ} …)])))] +@CHUNK[ + (define-template-metafunction (replace-in-instance stx) + (syntax-case stx () + [(_ _whole-type [_type-to-replaceᵢ _predicateᵢ _updateᵢ] …) + #`(#,(syntax-local-template-metafunction-introduce + (fold-f #'(_whole-type _type-to-replaceᵢ …))) + {?@ _predicateᵢ _updateᵢ} …)]))] + +@CHUNK[ + (define-template-metafunction (λ-replace-in-instance stx) + (syntax-case stx () + [(_ _whole-type _type-to-replaceᵢ …) + (syntax-local-introduce + (fold-f #'(_whole-type _type-to-replaceᵢ …)))]))] -@CHUNK[ - (define-for-syntax fold-f +@CHUNK[ + (define fold-f (syntax-parser [(_whole-type:type _type-to-replaceᵢ:type …) #:with rec-args #'([_type-to-replaceᵢ _predicateᵢ _updateᵢ] …) @@ -333,23 +345,6 @@ not expressed syntactically using the @racket[Foo] identifier. #'(values v acc)]] - -@CHUNK[ - (define-syntax define-fold - (syntax-parser - [(_ _function-name:id - _type-name:id - whole-type:type - _type-to-replaceᵢ:type …) - (with-folds - (λ () - #`(begin - (define-type _type-name - #,(fold-type #'(whole-type _type-to-replaceᵢ …))) - (define _function-name - #,(fold-f #'(whole-type _type-to-replaceᵢ …))))))]))] - - where @racket[foldl-map] is defined as: @chunk[ @@ -378,7 +373,6 @@ where @racket[foldl-map] is defined as: (subtract-in (combine-in racket/base syntax/parse) "subtemplate-override.rkt") - ;syntax/parse/experimental/template backport-template-pr1514/experimental/template phc-toolkit/untyped racket/syntax @@ -389,10 +383,15 @@ where @racket[foldl-map] is defined as: (for-meta 2 phc-toolkit/untyped) (for-meta 2 syntax/parse)) - (provide with-folds - (for-syntax replace-in-instance) - (for-syntax replace-in-type)) + (provide (for-syntax with-folds + replace-in-type + ∀-replace-in-type + replace-in-instance + λ-replace-in-instance)) - ] \ No newline at end of file + (begin-for-syntax + + + )] \ No newline at end of file