diff --git a/graph-lib/graph/__DEBUG_graph6.2.rkt b/graph-lib/graph/__DEBUG_graph6.2.rkt index 432ec331..ccf33424 100644 --- a/graph-lib/graph/__DEBUG_graph6.2.rkt +++ b/graph-lib/graph/__DEBUG_graph6.2.rkt @@ -1,23 +1,55 @@ #lang typed/racket (require ;"graph-6-rich-returns.lp2.rkt" - (except-in "../lib/low.rkt" ~>) - "graph.lp2.rkt" - "get.lp2.rkt" - "../type-expander/type-expander.lp2.rkt" - "../type-expander/multi-id.lp2.rkt" - "structure.lp2.rkt" ; debug - "variant.lp2.rkt" ; debug - "fold-queues.lp2.rkt"; debug - "rewrite-type.lp2.rkt"; debug - "meta-struct.rkt"; debug - racket/splicing; debug - racket/stxparam; debug - (for-syntax syntax/parse) - (for-syntax syntax/parse/experimental/template)) + (except-in "../lib/low.rkt" ~>) + "graph.lp2.rkt" + "get.lp2.rkt" + "../type-expander/type-expander.lp2.rkt" + "../type-expander/multi-id.lp2.rkt" + "structure.lp2.rkt" ; debug + "variant.lp2.rkt" ; debug + "fold-queues.lp2.rkt"; debug + "rewrite-type.lp2.rkt"; debug + "meta-struct.rkt"; debug + racket/splicing; debug + racket/stxparam; debug + (for-syntax syntax/parse) + (for-syntax syntax/parse/experimental/template)) + +(define-rename-transformer-parameter ~>aaa + (make-rename-transformer #'+)) (define-graph gr - #:wrapping-definitions (begin (define-graph-rest)) + #:wrapping-definitions + (begin + (define-type-expander + (first-step-expander1 stx) + (syntax-parse + stx + ((_ (~datum m-cities)) + (template + (U + (first-step #:placeholder m-cities3/node) + (Listof (first-step #:placeholder City))))) + ((_ (~datum m-streets)) + (template + (U + (first-step #:placeholder m-streets4/node) + (Listof (first-step #:placeholder Street))))))) + (define-type-expander + (first-step-expander2 stx) + (syntax-parse + stx + ((_ (~datum m-cities)) #'(U m-cities3/node (Listof City))) + ((_ (~datum m-streets)) #'(U m-streets4/node (Listof Street))))) + ;(define-syntax (g-rest stx) (syntax-local-introduce #')) + (splicing-let-syntaxes + () + (define-graph-rest)) + #;(splicing-syntax-parameterize + ();([~>aaa (make-rename-transformer #'first-step-expander1)]) + (g-rest)) + #;(define-graph-rest)) [City [streets : (Listof Street)] [people : (Listof Person)] [(m-city [c : (Listof (Pairof String String))]) (City (remove-duplicates (map (curry m-street c) (cdrs c))) diff --git a/graph-lib/graph/__DEBUG_graph6.rkt b/graph-lib/graph/__DEBUG_graph6.rkt index 530f7d71..351db7da 100644 --- a/graph-lib/graph/__DEBUG_graph6.rkt +++ b/graph-lib/graph/__DEBUG_graph6.rkt @@ -50,8 +50,8 @@ (begin (define-type-expander (first-step-expander1 stx) - #'Number - #;(syntax-parse + #;#'Number + (syntax-parse stx ((_ (~datum m-cities)) (template @@ -65,13 +65,17 @@ (Listof (first-step #:placeholder Street))))))) (define-type-expander (first-step-expander2 stx) - #'Number - #;(syntax-parse + #;#'Number + (syntax-parse stx ((_ (~datum m-cities)) #'(U m-cities3/node (Listof City))) ((_ (~datum m-streets)) #'(U m-streets4/node (Listof Street))))) - (splicing-syntax-parameterize - ((~> (make-rename-transformer #'first-step-expander1))))) + (splicing-let-syntax + ([~> (make-rename-transformer #'first-step-expander1)]) + (define-graph-rest)) + #;(splicing-syntax-parameterize + ((~> (make-rename-transformer #'first-step-expander1))) + (define-graph-rest))) (City (streets : (Let (~> first-step-expander2) (~> m-streets))) ((City1/simple-mapping (streets : (~> m-streets))) (City streets))) diff --git a/graph-lib/graph/__DEBUG_graph6.txt b/graph-lib/graph/__DEBUG_graph6.txt new file mode 100644 index 00000000..7286dbc4 --- /dev/null +++ b/graph-lib/graph/__DEBUG_graph6.txt @@ -0,0 +1,5 @@ +Attempts: +* (datum->syntax) Commit 876c4d2: works, but introduces ~> into the global scope +* (syntax-local-introduce) Does not work at all +* ((make-delta-introducer) (syntax-local-introduce)), see identifiers.ods and __DEBUG_graph6F.rkt: Works on normal identifiers (not sure?) but not for the graph (why?) +* splicing-syntax-parameterize Commit 56fdfae: splicing-syntax-parameterize messes up the scopes of its body diff --git a/graph-lib/graph/graph.lp2.rkt b/graph-lib/graph/graph.lp2.rkt index b6ba31e6..353da273 100644 --- a/graph-lib/graph/graph.lp2.rkt +++ b/graph-lib/graph/graph.lp2.rkt @@ -355,13 +355,17 @@ When the user gave @tc[#:wrapping-definitions] instead of @tc[#:definitions], we use syntax-parameterize to enable the @tc[(define-graph-rest)] form. @chunk[ - (splicing-syntax-parameterize - ([define-graph-rest - (syntax-rules () ;; TODO: indentation bug here in v 6.4.0.8 - [(_) #';(splicing-syntax-parameterize + (begin + (define-syntax (call-second-step stx) + (syntax-local-introduce + #')) + (splicing-syntax-parameterize + ([define-graph-rest + (syntax-rules () ;; TODO: indentation bug here in v 6.4.0.8 + [(_) call-second-step])]);(splicing-syntax-parameterize ; ([define-graph-rest default-define-graph-rest]) - ])]);)])]) - wrapping-extra-definitions)] + ;;)])]) + wrapping-extra-definitions))] The first step macro is defined as follows: diff --git a/graph-lib/graph/identifiers.ods b/graph-lib/graph/identifiers.ods new file mode 100644 index 00000000..9f0a9c9a Binary files /dev/null and b/graph-lib/graph/identifiers.ods differ