www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 72261decc4f6a59293d0a82b441a9caf6433ae1d
parent 22f3d97185bbed080c335df1105f912b215a9b4f
Author: Georges Dupéron <georges.duperon@gmail.com>
Date:   Sun,  5 Feb 2017 21:20:07 +0100

Cleanup of traversal.hl.rkt (still needs a lot of prose)

Diffstat:
Mtraversal.hl.rkt | 61+++++++++++++++++++++++++++++++++----------------------------
1 file changed, 33 insertions(+), 28 deletions(-)

diff --git a/traversal.hl.rkt b/traversal.hl.rkt @@ -8,10 +8,12 @@ (for-label racket/format racket/promise racket/list - syntax/parse - syntax/parse/experimental/template + (except-in subtemplate/override begin let) type-expander - (except-in (subtract-in typed/racket/base type-expander) + phc-adt + (except-in (subtract-in typed/racket/base + type-expander + subtemplate/override) values) (only-in racket/base values) (subtract-in racket/contract typed/racket/base) @@ -173,13 +175,13 @@ not expressed syntactically using the @racket[Foo] identifier. (get-τ-cache) (get-τ-defs) #'(_whole-type _type-to-replaceᵢ …)] - (define replacements (make-immutable-free-id-tree-table - (map syntax-e - (syntax->list - #'([_type-to-replaceᵢ . _Tᵢ] …))))) + (define replacements + (make-immutable-free-id-tree-table + (list [cons #'_type-to-replaceᵢ #'_Tᵢ] …))) #`(∀ (_Tᵢ …) #,(syntax-parse #'_whole-type - #:literals (Null Pairof Listof List Vectorof Vector U tagged) + #:literals (Null Pairof Listof List Vectorof Vector + U tagged) <type-cases>)))]))] @CHUNK[<cached> @@ -216,31 +218,34 @@ not expressed syntactically using the @racket[Foo] identifier. (syntax-parser [(_whole-type:type _type-to-replaceᵢ:type …) #:with rec-args #'([_type-to-replaceᵢ _predicateᵢ _updateᵢ] …) - (define replacements (make-immutable-free-id-tree-table - (map syntax-e - (syntax->list - #'([_type-to-replaceᵢ . _updateᵢ] …))))) + (define replacements + (make-immutable-free-id-tree-table + (list [cons #'_type-to-replaceᵢ #'_updateᵢ] …))) (define/with-syntax _args #'({?@ _predicateᵢ _updateᵢ} …)) (cached [f- (get-f-cache) (get-f-defs) #'(_whole-type _type-to-replaceᵢ …)] - #`[(λ ({?@ _predicateᵢ _updateᵢ} …) - (λ (v acc) - #,(syntax-parse #'_whole-type - #:literals (Null Pairof Listof List - Vectorof Vector U tagged) - <f-cases>))) - (∀ (_Aᵢ … _Bᵢ … Acc) - (→ (?@ (→ Any Boolean : _Aᵢ) - (→ _Aᵢ Acc (Values _Bᵢ Acc))) - … - (→ (!replace-in-type _whole-type - [_type-to-replaceᵢ _Aᵢ] …) - Acc - (Values (!replace-in-type _whole-type - [_type-to-replaceᵢ _Bᵢ] …) - Acc))))])]))] + #`[<fold-f-proc> + <fold-f-type>])]))] + +@CHUNK[<fold-f-proc> + (λ ({?@ _predicateᵢ _updateᵢ} …) + (λ (v acc) + #,(syntax-parse #'_whole-type + #:literals (Null Pairof Listof List + Vectorof Vector U tagged) + <f-cases>)))] + +@chunk[<fold-f-type> + (∀ (_Aᵢ … _Bᵢ … Acc) + (→ (?@ (→ Any Boolean : _Aᵢ) + (→ _Aᵢ Acc (Values _Bᵢ Acc))) + … + (→ (!replace-in-type _whole-type [_type-to-replaceᵢ _Aᵢ] …) + Acc + (Values (!replace-in-type _whole-type [_type-to-replaceᵢ _Bᵢ] …) + Acc))))] @chunk[<f-cases> [t