From 9d68e988820decd93294e2182b9c16f423ce41a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georges=20Dup=C3=A9ron?= Date: Fri, 26 Feb 2016 23:30:12 +0100 Subject: [PATCH] Revert "Fiasco with splicing-syntax-parameterize" This reverts commit f7b1db0e3cc1c16d5540bb2cc03b6d576901709f. --- 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 13873 -> 0 bytes 5 files changed, 27 insertions(+), 72 deletions(-) delete mode 100644 graph-lib/graph/__DEBUG_graph6.txt delete 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 ccf3342..432ec33 100644 --- a/graph-lib/graph/__DEBUG_graph6.2.rkt +++ b/graph-lib/graph/__DEBUG_graph6.2.rkt @@ -1,55 +1,23 @@ #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)) - -(define-rename-transformer-parameter ~>aaa - (make-rename-transformer #'+)) + (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-graph gr - #: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)) + #:wrapping-definitions (begin (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 351db7d..530f7d7 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,17 +65,13 @@ (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-let-syntax - ([~> (make-rename-transformer #'first-step-expander1)]) - (define-graph-rest)) - #;(splicing-syntax-parameterize - ((~> (make-rename-transformer #'first-step-expander1))) - (define-graph-rest))) + (splicing-syntax-parameterize + ((~> (make-rename-transformer #'first-step-expander1))))) (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 deleted file mode 100644 index 7286dbc..0000000 --- a/graph-lib/graph/__DEBUG_graph6.txt +++ /dev/null @@ -1,5 +0,0 @@ -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 353da27..b6ba31e 100644 --- a/graph-lib/graph/graph.lp2.rkt +++ b/graph-lib/graph/graph.lp2.rkt @@ -355,17 +355,13 @@ When the user gave @tc[#:wrapping-definitions] instead of @tc[#:definitions], we use syntax-parameterize to enable the @tc[(define-graph-rest)] form. @chunk[ - (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 + (splicing-syntax-parameterize + ([define-graph-rest + (syntax-rules () ;; TODO: indentation bug here in v 6.4.0.8 + [(_) #';(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 deleted file mode 100644 index 9f0a9c9ad81e6d028e3fed6fbc1c22f126345c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13873 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

bF;je*gzw?RZ;@c<9Y)7CZwg2VT;_nlhwvyuL8 zi%ZG9+37#;EcO*0HH0Kr&_UnLiCh;QmnENE3?+>O?m=JNS&S_x(=Utan-E&w8%=!L zsiTi4hG_OPkQa?wrDooo%ILB3W@8~ZJ*RZq#v6OU2ST&es4Y*`UYc>nV;TxjaHg$D ziCar;>yu%bbJU&Uc_{UKC@1tn>f4?1`CMOEeQnq=t`X!l#88bh@b(Kip>WDRCr$-M zChw0l>u={Nf+Ov%39s1_W++H{eJU67){0}Yg=kn`TwnaPony{C2ICds>c-$T zFU0n3;wNM6ksCky)N4d3LQ%%)kf)pQs6zA2)J}zCqp!3ShHB!%Ud7VJSBmd^f$G~! zSIRZ|Ni7Pp9*&kjyGQB^j43*(^t~f>T!>KErpn+j`qq8kC$WE&`XvOL&+3U0E|6KK zQiU~=V`M!aW>BgzG~qiK{bL8!%)-nABT6gUxHRVzHyFnQP^u#WP7^emT^q>1KX+a=E#l}9OIw_+Mo3SWRiz;rk#u}4MN>+!4OXm?F8_e z_G6L4*ePY$BLWfnM>*xhBUv|g2RggGTO!HD@vEyzbRqhejmzk=xs9*FR>U(O7T0PE zO3&a94S-a?5MQU?536Sd9kw5|GNYt8xTCKGIB*%7@pgVc4DyHuf4BcLsqS`UE*4?1 z0(x+f>T`i>I{B4AHTK#JyC9}5(e>pm1Q7?7eSpOKD@CcQ8dv5_on=L5n8pUIZ36l_ z_5MggHxLY!=k?+eG#Dcf-+0w{2M7g09A_SePtQYjQg>r&=eDwE8oY`3lB3~kEEE86`I@Qv&wkCnQe*Y)w0}7@;jtqYOZ2FIr|$6H zBMQW13?UNz@X{DSG7<0Zyp{nH7U~Tc#!+!QE$+oUbH;A{GToLAhKcg_o+b)*kVknF zrg7wuf>}*yvZr(VeY-@o6YfvNjC6D{5a#3B=^}16N@9Y(srq~aXEL5$A zZ4HpKuo0T`7Uqp)CB+VTOs|F>AiBSuKIDy|>)x_|Emw5<^i{fZY&pBuBoDGLOKX4K zDkaZJJJ62+iKQwrI*egY2!h-H{gS?)^e1<^t5x{y3MABdyg1mA5d{L(>CQVaV*X^P!Xiy zpPTsRXMX(dXz>xKncz>uhG;fcn?vc8a`{QBg}8Hu-C6{(w=Mz}?tS=Y-f%dHK|ecRyzi3YJxmFgGQiGk&}N@j z>y&TKC#^H8h_U(AAjE56LsG;w|FC$6I~bksh;ySk~pn2#uKT-W=`jqy=U67 zm$#dhbq)e%yra2>_fdOw7X%8zmA}kacWX2W^=dxf|7bpnSM%{(S{N7`+S~jqQQVf1 zPFq)3-%S7YtECN{uDy-Tf5!nJUTXp7R~rI=|JuFEziZ{UEcAb0`}h9c>*24kc9xcA zR@xT&W_15=dbW1jcJ{V9+BW||5ASd8XJun)XrpiYf6)Au+x~Y?`k(Jd@Hbk<=Gun( zwsfD3?aZ~UZ2!Z<{+)5GEUoOVUNiFT|AXG&J*t73rM8{^e=^PAY5ls z0lx^!^U;V(3eo*f`+6nLa`_>PZbHrDHD8JS4ALD<&i1T-$ zd3`DWI1}(!%|ALzzv6?x3;+8+MGOC`_{XmKmoN3ZNR$21v-+#vAKCw3r1L+DxKyu< z|KHvCU$y>7dVen98TFt0iN9+8g8z-zev#tuLif6?=C2I#4;1+u=s!{7@1OyH1NujT z{PR2WyB+}Wi#>jqw!gvoBVqnC&M(URU2gsc=g$QC&q%)*=69i|``_mJRkDBc%|E03 zqSW8T;BQd=7s38B*q@D*`!`^JB;0?-`E${h{s!lF0{*{6L3^E?`|JDkJ0brY<+ld= kM@1u1qB5m@&Et;