From f7b1db0e3cc1c16d5540bb2cc03b6d576901709f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= <georges.duperon@gmail.com>
Date: Fri, 26 Feb 2016 21:07:21 +0100
Subject: [PATCH] Fiasco with splicing-syntax-parameterize

---
 graph-lib/graph/__DEBUG_graph6.2.rkt |  62 ++++++++++++++++++++-------
 graph-lib/graph/__DEBUG_graph6.rkt   |  16 ++++---
 graph-lib/graph/__DEBUG_graph6.txt   |   5 +++
 graph-lib/graph/graph.lp2.rkt        |  16 ++++---
 graph-lib/graph/identifiers.ods      | Bin 0 -> 13873 bytes
 5 files changed, 72 insertions(+), 27 deletions(-)
 create mode 100644 graph-lib/graph/__DEBUG_graph6.txt
 create mode 100644 graph-lib/graph/identifiers.ods

diff --git a/graph-lib/graph/__DEBUG_graph6.2.rkt b/graph-lib/graph/__DEBUG_graph6.2.rkt
index 432ec33..ccf3342 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 530f7d7..351db7d 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 0000000..7286dbc
--- /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 b6ba31e..353da27 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[<wrapping-first-step>
-       (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
+            #'<call-second-step>))
+         (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])
-                        <call-second-step>])]);)])])
-         wrapping-extra-definitions)]
+                       ;<call-second-step>;)])])
+           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 0000000000000000000000000000000000000000..9f0a9c9ad81e6d028e3fed6fbc1c22f126345c83
GIT binary patch
literal 13873
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

literal 0
HcmV?d00001