scribble-enhanced/graph-lib/graph/graph-6-rich-returns.lp2.rkt
Georges Dupéron 55955ca6c1 WIP.
2016-02-23 19:20:33 +01:00

2987 lines
148 KiB
Racket

#lang scribble/lp2
@(require "../lib/doc.rkt")
@doc-lib-setup
@title[#:style manual-doc-style]{Syntactic sugar for
@racket[graph]: rich return types}
@(table-of-contents)
@section{Introduction}
We define a wrapper around the @tc[graph] macro, which
allows defining mappings with rich return types, instead of
being forced to return a single node. For example, a mapping
can return a list of nodes.
During the graph construction, however, the user cannot
access the contents of these rich values. If this was
allowed, constructing a node might cause infinite recursion,
which is precisely one of the pitfalls our library strives
to avoid. For example, the following two constructors each
depend on parts of the other's output.
@chunk[<example-infinite-loop>
(define-graph (g [a [len : Integer] [bs : (Listof b)]]
[b [len : Integer] [as : (Listof a)]])
[(ma) : (Listof a)
(let ([bs (mb)])
(list (a (length bs) bs)
(a 42 bs)))]
[(mb) : (Listof b)
(let ([as (ma)])
(list (b (length bs) as)
(b 123 as)))])]
In the above example, running @tc[(ma)] will require
running @tc[(mb)] too, to compute the length of the list
returned by @tc[(mb)], and vice-versa. It is clear this code
will run into an infinite loop in an eager language like
@tc[typed/racket].
To avoid this kind of issue, we will make the mapping
functions return opaque values whose contents cannot be
inspected during the creation of the graph. This also makes
the implementation easier, as we will generate the graph in
two phases: first, we will associate a single-field node
with each mapping, and use it as their return type. Then, a
second pass will break these nodes, and extract their
constituents until an actual user-specified node is
reached.
Since this implementation also allows serveral mappings to
return the same node, the new signature separates the
mapping declarations from the node definitions:
@chunk[<signature>
(define-graph/rich-return name:id
((~commit [node:id <field-signature> ])
)
(~commit <mapping-declaration>)
)]
Where @tc[<field-signature>] hasn't changed:
@chunk[<field-signature>
(~describe "[field : type]"
[field:id c:colon field-type:expr])]
We now allow more complex return types in a @tc[<mapping-declaration>]:
@chunk[<mapping-declaration>
(~describe "[(mapping [param : type] …) : result . body]"
[(mapping:id [param:id cp:colon param-type:expr] )
cm:colon result-type:expr
. body])]
Here is an example usage of this syntax:
@chunk[<test-graph-rich-return>
(define-graph/rich-return grr
([City [streets : (~> m-streets)]]
[Street [sname : String]])
[(m-cities [cnames : (Listof (Listof String))]) : (Listof City)
(define (strings→city [s : (Listof String)]) : City
(City (m-streets s)))
(map strings→city cnames)]
[(m-streets [snames : (Listof String)]) : (Listof Street)
(map Street snames)])]
The @tc[(~> m-streets)] type is a special marker which will
be expanded to the return type of @tc[m-streets] (namely
@tc[(Listof Street)]) in the final graph type. For the first
step, however, it will be expanded to
@tc[(U (grr #:placeholder m-streets/node) (Listof Street))].
Without this, passing the result of @tc[(m-streets s)] to
@tc[City] would be impossible: the former is a placeholder
for the temporary node type which encapsulates the result
of @tc[m-streets], while the latter would normally expect a
plain list.
@chunk[<graph-rich-return>
(define-syntax/parse <signature>
(define-temp-ids "first-step" name)
(define-temp-ids "~a/simple-mapping" (node ))
(define-temp-ids "~a/node" (mapping ))
(template
(debug
(begin
<first-pass-type-expander>
(define-graph first-step
[node [field c field-type]
[(node/simple-mapping [field c field-type] );<first-pass-field-type>] …)
(node field )]]
[mapping/node [returned cm result-type]
[(mapping [param cp param-type] )
(mapping/node
(let ([node node/simple-mapping] )
. body))]]
)))))]
As explained above, during the first pass, the field types
of nodes will allow placeholders for the temporary nodes
encapsulating the result types of mappings.
@chunk[<first-pass-type-expander>
(define-type-expander (~> stx)
(syntax-case stx ()
[(_ mapping) #'(U mapping/node result-type)] ))]
@; TODO: replace-in-type doesn't work well here, we need to define a
@; type-expander.
@chunk[<first-pass-field-type>
(tmpl-replace-in-type field-type
[(~> mapping) (U mapping/node result-type)] )]
@section{Conclusion}
@chunk[<module-main>
(module main typed/racket
(require (for-syntax syntax/parse
syntax/parse/experimental/template
racket/syntax
syntax/stx
"../lib/low-untyped.rkt"
"../lib/low/multiassoc-syntax.rkt")
"../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
)
(provide define-graph/rich-return)
(require (for-syntax racket/pretty))
(define-syntax (debug stx)
(syntax-case stx ()
[(_ body)
;; syntax->string
(pretty-print (syntax->datum #'body))
#'body]))
#;(begin
(define-type-expander
(~> stx)
(syntax-case stx ()
((_ m-cities) #'(U m-cities3/node (Listof City)))
((_ m-streets) #'(U m-streets4/node (Listof Street)))))
(define-graph
first-step #:debug
(City
(streets : (U m-streets4/node (Listof Street)))
((City1/simple-mapping (streets : (U (first-step #:placeholder m-streets4/node)
(Listof (first-step #:placeholder Street)))))
(City streets)))
(Street
(sname : String)
((Street2/simple-mapping (sname : String)) (Street sname)))
(m-cities3/node
(returned : (Listof City))
((m-cities (cnames : (Listof (Listof String))))
(m-cities3/node
(let ((City City1/simple-mapping) (Street Street2/simple-mapping))
(define (strings→city (s : (Listof String)))
:
(first-step #:placeholder City)
(City (m-streets s)))
(map strings→city cnames)))))
(m-streets4/node
(returned : (Listof Street))
((m-streets (snames : (Listof String)))
(m-streets4/node
(let ((City City1/simple-mapping) (Street Street2/simple-mapping))
(map Street snames)))))))
(begin
(define-multi-id
first-step
#:type-expander
(λ (stx)
(syntax-parse
stx
((_ (~datum City)) #'City58/with-promises-type)
((_ (~datum Street)) #'Street59/with-promises-type)
((_ (~datum m-cities3/node)) #'m-cities3/node60/with-promises-type)
((_ (~datum m-streets4/node)) #'m-streets4/node61/with-promises-type)
((_ #:incomplete (~datum City)) #'City22/incomplete-type)
((_ #:incomplete (~datum Street)) #'Street23/incomplete-type)
((_ #:incomplete (~datum m-cities3/node))
#'m-cities3/node24/incomplete-type)
((_ #:incomplete (~datum m-streets4/node))
#'m-streets4/node25/incomplete-type)
((_ #:make-incomplete (~datum City))
#'(
(U
m-streets4/node17/placeholder-type
(Listof Street15/placeholder-type))
City22/incomplete-type))
((_ #:make-incomplete (~datum Street))
#'( String Street23/incomplete-type))
((_ #:make-incomplete (~datum m-cities3/node))
#'( (Listof City14/placeholder-type) m-cities3/node24/incomplete-type))
((_ #:make-incomplete (~datum m-streets4/node))
#'(
(Listof Street15/placeholder-type)
m-streets4/node25/incomplete-type))
((_ #:incomplete (~datum City) fld)
(syntax-parse
#'fld
((~datum streets)
#'(U
m-streets4/node17/placeholder-type
(Listof Street15/placeholder-type)))))
((_ #:incomplete (~datum Street) fld)
(syntax-parse #'fld ((~datum sname) #'String)))
((_ #:incomplete (~datum m-cities3/node) fld)
(syntax-parse
#'fld
((~datum returned) #'(Listof City14/placeholder-type))))
((_ #:incomplete (~datum m-streets4/node) fld)
(syntax-parse
#'fld
((~datum returned) #'(Listof Street15/placeholder-type))))
((_ #:make-placeholder (~datum City))
#'(
(U
(first-step #:placeholder m-streets4/node)
(Listof (first-step #:placeholder Street)))
City14/placeholder-type))
((_ #:make-placeholder (~datum Street))
#'( String Street15/placeholder-type))
((_ #:make-placeholder (~datum m-cities3/node))
#'( (Listof (Listof String)) m-cities3/node16/placeholder-type))
((_ #:make-placeholder (~datum m-streets4/node))
#'( (Listof String) m-streets4/node17/placeholder-type))
((_ #:placeholder (~datum City)) #'City14/placeholder-type)
((_ #:placeholder (~datum Street)) #'Street15/placeholder-type)
((_ #:placeholder (~datum m-cities3/node))
#'m-cities3/node16/placeholder-type)
((_ #:placeholder (~datum m-streets4/node))
#'m-streets4/node17/placeholder-type)))
#:call
(λ (stx)
(syntax-parse
stx
((_ #:λroot (~datum City)) #'City2/constructor)
((_ #:λroot (~datum Street)) #'Street3/constructor)
((_ #:λroot (~datum m-cities3/node)) #'m-cities3/node4/constructor)
((_ #:λroot (~datum m-streets4/node)) #'m-streets4/node5/constructor)
((_ #:root (~datum City) . rest)
(syntax/loc stx (City2/constructor . rest)))
((_ #:root (~datum Street) . rest)
(syntax/loc stx (Street3/constructor . rest)))
((_ #:root (~datum m-cities3/node) . rest)
(syntax/loc stx (m-cities3/node4/constructor . rest)))
((_ #:root (~datum m-streets4/node) . rest)
(syntax/loc stx (m-streets4/node5/constructor . rest)))
((_ . rest) (syntax/loc stx (City2/constructor . rest)))))
#:id
(λ (stx) #'City2/constructor))
(begin
(struct (A) City10/placeholder-struct ((f : A)))
(define-type
City14/placeholder-type
(City10/placeholder-struct
(List
(U
(first-step #:placeholder m-streets4/node)
(Listof (first-step #:placeholder Street)))))))
(begin
(struct (A) Street11/placeholder-struct ((f : A)))
(define-type
Street15/placeholder-type
(Street11/placeholder-struct (List String))))
(begin
(struct (A) m-cities3/node12/placeholder-struct ((f : A)))
(define-type
m-cities3/node16/placeholder-type
(m-cities3/node12/placeholder-struct (List (Listof (Listof String))))))
(begin
(struct (A) m-streets4/node13/placeholder-struct ((f : A)))
(define-type
m-streets4/node17/placeholder-type
(m-streets4/node13/placeholder-struct (List (Listof String)))))
(begin
(:
City6/make-placeholder
(
(U
(first-step #:placeholder m-streets4/node)
(Listof (first-step #:placeholder Street)))
City14/placeholder-type))
(define (City6/make-placeholder streets)
((inst
City10/placeholder-struct
(List
(U
(first-step #:placeholder m-streets4/node)
(Listof (first-step #:placeholder Street)))))
(list streets))))
(begin
(: Street7/make-placeholder ( String Street15/placeholder-type))
(define (Street7/make-placeholder sname)
((inst Street11/placeholder-struct (List String)) (list sname))))
(begin
(:
m-cities3/node8/make-placeholder
( (Listof (Listof String)) m-cities3/node16/placeholder-type))
(define (m-cities3/node8/make-placeholder cnames)
((inst
m-cities3/node12/placeholder-struct
(List (Listof (Listof String))))
(list cnames))))
(begin
(:
m-streets4/node9/make-placeholder
( (Listof String) m-streets4/node17/placeholder-type))
(define (m-streets4/node9/make-placeholder snames)
((inst m-streets4/node13/placeholder-struct (List (Listof String)))
(list snames))))
(begin
(define-type City50/index-type (List 'City46/with-indices-tag2 Index))
(define-type
City34/with-indices-type
(List
'City42/with-indices-tag
(U m-streets4/node53/index-type (Listof Street51/index-type))))
(:
City38/make-with-indices
(
(U m-streets4/node53/index-type (Listof Street51/index-type))
City34/with-indices-type))
(define (City38/make-with-indices streets)
(list 'City42/with-indices-tag streets)))
(begin
(define-type Street51/index-type (List 'Street47/with-indices-tag2 Index))
(define-type
Street35/with-indices-type
(List 'Street43/with-indices-tag String))
(: Street39/make-with-indices ( String Street35/with-indices-type))
(define (Street39/make-with-indices sname)
(list 'Street43/with-indices-tag sname)))
(begin
(define-type
m-cities3/node52/index-type
(List 'm-cities3/node48/with-indices-tag2 Index))
(define-type
m-cities3/node36/with-indices-type
(List 'm-cities3/node44/with-indices-tag (Listof City50/index-type)))
(:
m-cities3/node40/make-with-indices
( (Listof City50/index-type) m-cities3/node36/with-indices-type))
(define (m-cities3/node40/make-with-indices returned)
(list 'm-cities3/node44/with-indices-tag returned)))
(begin
(define-type
m-streets4/node53/index-type
(List 'm-streets4/node49/with-indices-tag2 Index))
(define-type
m-streets4/node37/with-indices-type
(List 'm-streets4/node45/with-indices-tag (Listof Street51/index-type)))
(:
m-streets4/node41/make-with-indices
( (Listof Street51/index-type) m-streets4/node37/with-indices-type))
(define (m-streets4/node41/make-with-indices returned)
(list 'm-streets4/node45/with-indices-tag returned)))
(begin
(define-type
City58/with-promises-type
(tagged
City66/with-promises-tag
(streets
:
(U
(Promise m-streets4/node61/with-promises-type)
(Listof (Promise Street59/with-promises-type))))))
(:
City62/make-with-promises
(
(U
(Promise m-streets4/node61/with-promises-type)
(Listof (Promise Street59/with-promises-type)))
City58/with-promises-type))
(define (City62/make-with-promises streets78/value)
(tagged
City66/with-promises-tag
(streets
:
(U
(Promise m-streets4/node61/with-promises-type)
(Listof (Promise Street59/with-promises-type)))
streets78/value))))
(begin
(define-type
Street59/with-promises-type
(tagged Street67/with-promises-tag (sname : String)))
(: Street63/make-with-promises ( String Street59/with-promises-type))
(define (Street63/make-with-promises sname79/value)
(tagged Street67/with-promises-tag (sname : String sname79/value))))
(begin
(define-type
m-cities3/node60/with-promises-type
(tagged
m-cities3/node68/with-promises-tag
(returned : (Listof (Promise City58/with-promises-type)))))
(:
m-cities3/node64/make-with-promises
(
(Listof (Promise City58/with-promises-type))
m-cities3/node60/with-promises-type))
(define (m-cities3/node64/make-with-promises returned80/value)
(tagged
m-cities3/node68/with-promises-tag
(returned
:
(Listof (Promise City58/with-promises-type))
returned80/value))))
(begin
(define-type
m-streets4/node61/with-promises-type
(tagged
m-streets4/node69/with-promises-tag
(returned : (Listof (Promise Street59/with-promises-type)))))
(:
m-streets4/node65/make-with-promises
(
(Listof (Promise Street59/with-promises-type))
m-streets4/node61/with-promises-type))
(define (m-streets4/node65/make-with-promises returned81/value)
(tagged
m-streets4/node69/with-promises-tag
(returned
:
(Listof (Promise Street59/with-promises-type))
returned81/value))))
(begin
(define-type
City22/incomplete-type
(List
'City30/incomplete-tag
(U
m-streets4/node17/placeholder-type
(Listof Street15/placeholder-type))))
(:
City26/make-incomplete
(
(U m-streets4/node17/placeholder-type (Listof Street15/placeholder-type))
City22/incomplete-type))
(define (City26/make-incomplete streets)
(list 'City30/incomplete-tag streets)))
(begin
(define-type
Street23/incomplete-type
(List 'Street31/incomplete-tag String))
(: Street27/make-incomplete ( String Street23/incomplete-type))
(define (Street27/make-incomplete sname)
(list 'Street31/incomplete-tag sname)))
(begin
(define-type
m-cities3/node24/incomplete-type
(List 'm-cities3/node32/incomplete-tag (Listof City14/placeholder-type)))
(:
m-cities3/node28/make-incomplete
( (Listof City14/placeholder-type) m-cities3/node24/incomplete-type))
(define (m-cities3/node28/make-incomplete returned)
(list 'm-cities3/node32/incomplete-tag returned)))
(begin
(define-type
m-streets4/node25/incomplete-type
(List
'm-streets4/node33/incomplete-tag
(Listof Street15/placeholder-type)))
(:
m-streets4/node29/make-incomplete
( (Listof Street15/placeholder-type) m-streets4/node25/incomplete-type))
(define (m-streets4/node29/make-incomplete returned)
(list 'm-streets4/node33/incomplete-tag returned)))
(begin
(:
City70/mapping-function
(
(U
(first-step #:placeholder m-streets4/node)
(Listof (first-step #:placeholder Street)))
City22/incomplete-type))
(define City70/mapping-function
(let ((City1/simple-mapping City6/make-placeholder)
(Street2/simple-mapping Street7/make-placeholder)
(m-cities m-cities3/node8/make-placeholder)
(m-streets m-streets4/node9/make-placeholder)
(City City26/make-incomplete)
(Street Street27/make-incomplete)
(m-cities3/node m-cities3/node28/make-incomplete)
(m-streets4/node m-streets4/node29/make-incomplete))
(λ ((streets
:
(U
(first-step #:placeholder m-streets4/node)
(Listof (first-step #:placeholder Street)))))
:
City22/incomplete-type
(City streets)))))
(begin
(: Street71/mapping-function ( String Street23/incomplete-type))
(define Street71/mapping-function
(let ((City1/simple-mapping City6/make-placeholder)
(Street2/simple-mapping Street7/make-placeholder)
(m-cities m-cities3/node8/make-placeholder)
(m-streets m-streets4/node9/make-placeholder)
(City City26/make-incomplete)
(Street Street27/make-incomplete)
(m-cities3/node m-cities3/node28/make-incomplete)
(m-streets4/node m-streets4/node29/make-incomplete))
(λ ((sname : String)) : Street23/incomplete-type (Street sname)))))
(begin
(:
m-cities3/node72/mapping-function
( (Listof (Listof String)) m-cities3/node24/incomplete-type))
(define m-cities3/node72/mapping-function
(let ((City1/simple-mapping City6/make-placeholder)
(Street2/simple-mapping Street7/make-placeholder)
(m-cities m-cities3/node8/make-placeholder)
(m-streets m-streets4/node9/make-placeholder)
(City City26/make-incomplete)
(Street Street27/make-incomplete)
(m-cities3/node m-cities3/node28/make-incomplete)
(m-streets4/node m-streets4/node29/make-incomplete))
(λ ((cnames : (Listof (Listof String))))
:
m-cities3/node24/incomplete-type
(m-cities3/node
(let ((City City1/simple-mapping) (Street Street2/simple-mapping))
(define (strings→city (s : (Listof String)))
:
(first-step #:placeholder City)
(City (m-streets s)))
(map strings→city cnames)))))))
(begin
(:
m-streets4/node73/mapping-function
( (Listof String) m-streets4/node25/incomplete-type))
(define m-streets4/node73/mapping-function
(let ((City1/simple-mapping City6/make-placeholder)
(Street2/simple-mapping Street7/make-placeholder)
(m-cities m-cities3/node8/make-placeholder)
(m-streets m-streets4/node9/make-placeholder)
(City City26/make-incomplete)
(Street Street27/make-incomplete)
(m-cities3/node m-cities3/node28/make-incomplete)
(m-streets4/node m-streets4/node29/make-incomplete))
(λ ((snames : (Listof String)))
:
m-streets4/node25/incomplete-type
(m-streets4/node
(let ((City City1/simple-mapping) (Street Street2/simple-mapping))
(map Street snames)))))))
(:
fq
(case→
(
'City18/placeholder-queue
City14/placeholder-type
(List
(Vectorof City34/with-indices-type)
(Vectorof Street35/with-indices-type)
(Vectorof m-cities3/node36/with-indices-type)
(Vectorof m-streets4/node37/with-indices-type)))
(
'Street19/placeholder-queue
Street15/placeholder-type
(List
(Vectorof City34/with-indices-type)
(Vectorof Street35/with-indices-type)
(Vectorof m-cities3/node36/with-indices-type)
(Vectorof m-streets4/node37/with-indices-type)))
(
'm-cities3/node20/placeholder-queue
m-cities3/node16/placeholder-type
(List
(Vectorof City34/with-indices-type)
(Vectorof Street35/with-indices-type)
(Vectorof m-cities3/node36/with-indices-type)
(Vectorof m-streets4/node37/with-indices-type)))
(
'm-streets4/node21/placeholder-queue
m-streets4/node17/placeholder-type
(List
(Vectorof City34/with-indices-type)
(Vectorof Street35/with-indices-type)
(Vectorof m-cities3/node36/with-indices-type)
(Vectorof m-streets4/node37/with-indices-type)))))
(define (fq queue-name placeholder)
(fold-queues
#:root
queue-name
placeholder
((City18/placeholder-queue
(e : City14/placeholder-type)
(Δ-queues : Δ-Queues)
enqueue)
:
City34/with-indices-type
(let ((mapping-result
(apply
City70/mapping-function
((struct-accessor City10/placeholder-struct 0) e)))
(f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List
(U
m-streets4/node17/placeholder-type
(Listof Street15/placeholder-type)))
Δ-Queues
(City14/placeholder-type
(List 'City46/with-indices-tag2 Index)
(struct-predicate City10/placeholder-struct)
λ…)
(Street15/placeholder-type
(List 'Street47/with-indices-tag2 Index)
(struct-predicate Street11/placeholder-struct)
λ…)
(m-cities3/node16/placeholder-type
(List 'm-cities3/node48/with-indices-tag2 Index)
(struct-predicate m-cities3/node12/placeholder-struct)
λ…)
(m-streets4/node17/placeholder-type
(List 'm-streets4/node49/with-indices-tag2 Index)
(struct-predicate m-streets4/node13/placeholder-struct)
λ…))
(λ ((val
:
(List
(U
m-streets4/node17/placeholder-type
(Listof Street15/placeholder-type))))
(acc : Δ-Queues))
:
(values
(List
(U
(List 'm-streets4/node49/with-indices-tag2 Index)
(Listof (List 'Street47/with-indices-tag2 Index))))
Δ-Queues)
(let*-values (((temp83) (apply values val))
((temp84 temp85)
((λ ((val
:
(U
m-streets4/node17/placeholder-type
(Listof Street15/placeholder-type)))
(acc : Δ-Queues))
:
(values
(U
(List
'm-streets4/node49/with-indices-tag2
Index)
(Listof
(List
'Street47/with-indices-tag2
Index)))
Δ-Queues)
(cond
(((struct-predicate
m-streets4/node13/placeholder-struct)
val)
((ann
(λ ((p
:
m-streets4/node17/placeholder-type)
(Δ-acc : Δ-Queues))
:
(values
(List
'm-streets4/node49/with-indices-tag2
Index)
Δ-Queues)
(%
index
new-Δ-acc
=
(enqueue
'm-streets4/node21/placeholder-queue
p
Δ-acc)
(values
(list
'm-streets4/node49/with-indices-tag2
index)
new-Δ-acc)))
(
m-streets4/node17/placeholder-type
Δ-Queues
(values
(List
'm-streets4/node49/with-indices-tag2
Index)
Δ-Queues)))
val
acc))
(#t
((λ ((val
:
(Listof Street15/placeholder-type))
(acc : Δ-Queues))
:
(values
(Listof
(List
'Street47/with-indices-tag2
Index))
Δ-Queues)
(let ((f
((inst
foldl
Street15/placeholder-type
(Pairof
(Listof
(List
'Street47/with-indices-tag2
Index))
Δ-Queues)
Nothing
Nothing)
(λ ((x
:
Street15/placeholder-type)
(acc1
:
(Pairof
(Listof
(List
'Street47/with-indices-tag2
Index))
Δ-Queues)))
(let-values (((res res-acc)
((ann
(λ ((p
:
Street15/placeholder-type)
(Δ-acc
:
Δ-Queues))
:
(values
(List
'Street47/with-indices-tag2
Index)
Δ-Queues)
(%
index
new-Δ-acc
=
(enqueue
'Street19/placeholder-queue
p
Δ-acc)
(values
(list
'Street47/with-indices-tag2
index)
new-Δ-acc)))
(
Street15/placeholder-type
Δ-Queues
(values
(List
'Street47/with-indices-tag2
Index)
Δ-Queues)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
val
acc))
(else
(typecheck-fail
(U
m-streets4/node17/placeholder-type
(Listof Street15/placeholder-type))
"Unhandled union case in (U m-streets4/node17/placeholder-type (Listof Street15/placeholder-type)), whole type was:(List (U m-streets4/node17/placeholder-type (Listof Street15/placeholder-type)))"))))
temp83
acc)))
(values (list temp84) temp85))))))
(let-values (((r new-Δ-queues) (f (cdr mapping-result) Δ-queues)))
(values (apply City38/make-with-indices r) new-Δ-queues))))
((Street19/placeholder-queue
(e : Street15/placeholder-type)
(Δ-queues : Δ-Queues)
enqueue)
:
Street35/with-indices-type
(let ((mapping-result
(apply
Street71/mapping-function
((struct-accessor Street11/placeholder-struct 0) e)))
(f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List String)
Δ-Queues
(City14/placeholder-type
(List 'City46/with-indices-tag2 Index)
(struct-predicate City10/placeholder-struct)
λ…)
(Street15/placeholder-type
(List 'Street47/with-indices-tag2 Index)
(struct-predicate Street11/placeholder-struct)
λ…)
(m-cities3/node16/placeholder-type
(List 'm-cities3/node48/with-indices-tag2 Index)
(struct-predicate m-cities3/node12/placeholder-struct)
λ…)
(m-streets4/node17/placeholder-type
(List 'm-streets4/node49/with-indices-tag2 Index)
(struct-predicate m-streets4/node13/placeholder-struct)
λ…))
(λ ((val : (List String)) (acc : Δ-Queues))
:
(values (List String) Δ-Queues)
(let*-values (((String93) (apply values val))
((String94 String95)
((inst values String Δ-Queues) String93 acc)))
(values (list String94) String95))))))
(let-values (((r new-Δ-queues) (f (cdr mapping-result) Δ-queues)))
(values (apply Street39/make-with-indices r) new-Δ-queues))))
((m-cities3/node20/placeholder-queue
(e : m-cities3/node16/placeholder-type)
(Δ-queues : Δ-Queues)
enqueue)
:
m-cities3/node36/with-indices-type
(let ((mapping-result
(apply
m-cities3/node72/mapping-function
((struct-accessor m-cities3/node12/placeholder-struct 0) e)))
(f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof City14/placeholder-type))
Δ-Queues
(City14/placeholder-type
(List 'City46/with-indices-tag2 Index)
(struct-predicate City10/placeholder-struct)
λ…)
(Street15/placeholder-type
(List 'Street47/with-indices-tag2 Index)
(struct-predicate Street11/placeholder-struct)
λ…)
(m-cities3/node16/placeholder-type
(List 'm-cities3/node48/with-indices-tag2 Index)
(struct-predicate m-cities3/node12/placeholder-struct)
λ…)
(m-streets4/node17/placeholder-type
(List 'm-streets4/node49/with-indices-tag2 Index)
(struct-predicate m-streets4/node13/placeholder-struct)
λ…))
(λ ((val : (List (Listof City14/placeholder-type)))
(acc : Δ-Queues))
:
(values
(List (Listof (List 'City46/with-indices-tag2 Index)))
Δ-Queues)
(let*-values (((temp98) (apply values val))
((temp99 temp100)
((λ ((val : (Listof City14/placeholder-type))
(acc : Δ-Queues))
:
(values
(Listof
(List 'City46/with-indices-tag2 Index))
Δ-Queues)
(let ((f
((inst
foldl
City14/placeholder-type
(Pairof
(Listof
(List
'City46/with-indices-tag2
Index))
Δ-Queues)
Nothing
Nothing)
(λ ((x : City14/placeholder-type)
(acc1
:
(Pairof
(Listof
(List
'City46/with-indices-tag2
Index))
Δ-Queues)))
(let-values (((res res-acc)
((ann
(λ ((p
:
City14/placeholder-type)
(Δ-acc
:
Δ-Queues))
:
(values
(List
'City46/with-indices-tag2
Index)
Δ-Queues)
(%
index
new-Δ-acc
=
(enqueue
'City18/placeholder-queue
p
Δ-acc)
(values
(list
'City46/with-indices-tag2
index)
new-Δ-acc)))
(
City14/placeholder-type
Δ-Queues
(values
(List
'City46/with-indices-tag2
Index)
Δ-Queues)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp98
acc)))
(values (list temp99) temp100))))))
(let-values (((r new-Δ-queues) (f (cdr mapping-result) Δ-queues)))
(values (apply m-cities3/node40/make-with-indices r) new-Δ-queues))))
((m-streets4/node21/placeholder-queue
(e : m-streets4/node17/placeholder-type)
(Δ-queues : Δ-Queues)
enqueue)
:
m-streets4/node37/with-indices-type
(let ((mapping-result
(apply
m-streets4/node73/mapping-function
((struct-accessor m-streets4/node13/placeholder-struct 0) e)))
(f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof Street15/placeholder-type))
Δ-Queues
(City14/placeholder-type
(List 'City46/with-indices-tag2 Index)
(struct-predicate City10/placeholder-struct)
λ…)
(Street15/placeholder-type
(List 'Street47/with-indices-tag2 Index)
(struct-predicate Street11/placeholder-struct)
λ…)
(m-cities3/node16/placeholder-type
(List 'm-cities3/node48/with-indices-tag2 Index)
(struct-predicate m-cities3/node12/placeholder-struct)
λ…)
(m-streets4/node17/placeholder-type
(List 'm-streets4/node49/with-indices-tag2 Index)
(struct-predicate m-streets4/node13/placeholder-struct)
λ…))
(λ ((val : (List (Listof Street15/placeholder-type)))
(acc : Δ-Queues))
:
(values
(List (Listof (List 'Street47/with-indices-tag2 Index)))
Δ-Queues)
(let*-values (((temp105) (apply values val))
((temp106 temp107)
((λ ((val : (Listof Street15/placeholder-type))
(acc : Δ-Queues))
:
(values
(Listof
(List 'Street47/with-indices-tag2 Index))
Δ-Queues)
(let ((f
((inst
foldl
Street15/placeholder-type
(Pairof
(Listof
(List
'Street47/with-indices-tag2
Index))
Δ-Queues)
Nothing
Nothing)
(λ ((x : Street15/placeholder-type)
(acc1
:
(Pairof
(Listof
(List
'Street47/with-indices-tag2
Index))
Δ-Queues)))
(let-values (((res res-acc)
((ann
(λ ((p
:
Street15/placeholder-type)
(Δ-acc
:
Δ-Queues))
:
(values
(List
'Street47/with-indices-tag2
Index)
Δ-Queues)
(%
index
new-Δ-acc
=
(enqueue
'Street19/placeholder-queue
p
Δ-acc)
(values
(list
'Street47/with-indices-tag2
index)
new-Δ-acc)))
(
Street15/placeholder-type
Δ-Queues
(values
(List
'Street47/with-indices-tag2
Index)
Δ-Queues)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp105
acc)))
(values (list temp106) temp107))))))
(let-values (((r new-Δ-queues) (f (cdr mapping-result) Δ-queues)))
(values
(apply m-streets4/node41/make-with-indices r)
new-Δ-queues))))))
(begin
(:
City2/constructor
(
(U
(first-step #:placeholder m-streets4/node)
(Listof (first-step #:placeholder Street)))
(Promise City58/with-promises-type)))
(define (City2/constructor streets)
(match-let
(((list
City74/database
Street75/database
m-cities3/node76/database
m-streets4/node77/database)
(fq 'City18/placeholder-queue (City6/make-placeholder streets))))
(begin
(:
City54/with-indices→with-promises
( City34/with-indices-type City58/with-promises-type))
(define (City54/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List
(U
m-streets4/node53/index-type
(Listof Street51/index-type)))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val
:
(List
(U
m-streets4/node53/index-type
(Listof Street51/index-type))))
(acc : Void))
:
(values
(List
(U
(Promise m-streets4/node61/with-promises-type)
(Listof (Promise Street59/with-promises-type))))
Void)
(let*-values (((temp112) (apply values val))
((temp113 temp114)
((λ ((val
:
(U
m-streets4/node53/index-type
(Listof Street51/index-type)))
(acc : Void))
:
(values
(U
(Promise
m-streets4/node61/with-promises-type)
(Listof
(Promise Street59/with-promises-type)))
Void)
(cond
(((λ (x)
(and (pair? x)
(eq?
(car x)
'm-streets4/node49/with-indices-tag2)))
val)
((ann
(λ ((tagged-index
:
m-streets4/node53/index-type)
(acc : Void))
:
(values
(Promise
m-streets4/node61/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
m-streets4/node77/database
(cadr tagged-index))))
(delay
(m-streets4/node57/with-indices→with-promises
successor-with-index)))
acc))
(
m-streets4/node53/index-type
Void
(values
(Promise
m-streets4/node61/with-promises-type)
Void)))
val
acc))
(#t
((λ ((val : (Listof Street51/index-type))
(acc : Void))
:
(values
(Listof
(Promise
Street59/with-promises-type))
Void)
(let ((f
((inst
foldl
Street51/index-type
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : Street51/index-type)
(acc1
:
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
Street51/index-type)
(acc
:
Void))
:
(values
(Promise
Street59/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
Street75/database
(cadr
tagged-index))))
(delay
(Street55/with-indices→with-promises
successor-with-index)))
acc))
(
Street51/index-type
Void
(values
(Promise
Street59/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
val
acc))
(else
(typecheck-fail
(U
m-streets4/node53/index-type
(Listof Street51/index-type))
"Unhandled union case in (U m-streets4/node53/index-type (Listof Street51/index-type)), whole type was:(List (U m-streets4/node53/index-type (Listof Street51/index-type)))"))))
temp112
acc)))
(values (list temp113) temp114)))))
(apply City62/make-with-promises (first-value (f (cdr n) (void))))))
(begin
(:
Street55/with-indices→with-promises
( Street35/with-indices-type Street59/with-promises-type))
(define (Street55/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List String)
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List String)) (acc : Void))
:
(values (List String) Void)
(let*-values (((String122) (apply values val))
((String123 String124)
((inst values String Void) String122 acc)))
(values (list String123) String124)))))
(apply
Street63/make-with-promises
(first-value (f (cdr n) (void))))))
(begin
(:
m-cities3/node56/with-indices→with-promises
(
m-cities3/node36/with-indices-type
m-cities3/node60/with-promises-type))
(define (m-cities3/node56/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof City50/index-type))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List (Listof City50/index-type))) (acc : Void))
:
(values
(List (Listof (Promise City58/with-promises-type)))
Void)
(let*-values (((temp127) (apply values val))
((temp128 temp129)
((λ ((val : (Listof City50/index-type))
(acc : Void))
:
(values
(Listof
(Promise City58/with-promises-type))
Void)
(let ((f
((inst
foldl
City50/index-type
(Pairof
(Listof
(Promise
City58/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : City50/index-type)
(acc1
:
(Pairof
(Listof
(Promise
City58/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
City50/index-type)
(acc : Void))
:
(values
(Promise
City58/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
City74/database
(cadr
tagged-index))))
(delay
(City54/with-indices→with-promises
successor-with-index)))
acc))
(
City50/index-type
Void
(values
(Promise
City58/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp127
acc)))
(values (list temp128) temp129)))))
(apply
m-cities3/node64/make-with-promises
(first-value (f (cdr n) (void))))))
(begin
(:
m-streets4/node57/with-indices→with-promises
(
m-streets4/node37/with-indices-type
m-streets4/node61/with-promises-type))
(define (m-streets4/node57/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof Street51/index-type))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List (Listof Street51/index-type))) (acc : Void))
:
(values
(List (Listof (Promise Street59/with-promises-type)))
Void)
(let*-values (((temp134) (apply values val))
((temp135 temp136)
((λ ((val : (Listof Street51/index-type))
(acc : Void))
:
(values
(Listof
(Promise Street59/with-promises-type))
Void)
(let ((f
((inst
foldl
Street51/index-type
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : Street51/index-type)
(acc1
:
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
Street51/index-type)
(acc : Void))
:
(values
(Promise
Street59/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
Street75/database
(cadr
tagged-index))))
(delay
(Street55/with-indices→with-promises
successor-with-index)))
acc))
(
Street51/index-type
Void
(values
(Promise
Street59/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp134
acc)))
(values (list temp135) temp136)))))
(apply
m-streets4/node65/make-with-promises
(first-value (f (cdr n) (void))))))
(delay
(City54/with-indices→with-promises (vector-ref City74/database 0))))))
(begin
(: Street3/constructor ( String (Promise Street59/with-promises-type)))
(define (Street3/constructor sname)
(match-let
(((list
City74/database
Street75/database
m-cities3/node76/database
m-streets4/node77/database)
(fq 'Street19/placeholder-queue (Street7/make-placeholder sname))))
(begin
(:
City54/with-indices→with-promises
( City34/with-indices-type City58/with-promises-type))
(define (City54/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List
(U
m-streets4/node53/index-type
(Listof Street51/index-type)))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val
:
(List
(U
m-streets4/node53/index-type
(Listof Street51/index-type))))
(acc : Void))
:
(values
(List
(U
(Promise m-streets4/node61/with-promises-type)
(Listof (Promise Street59/with-promises-type))))
Void)
(let*-values (((temp141) (apply values val))
((temp142 temp143)
((λ ((val
:
(U
m-streets4/node53/index-type
(Listof Street51/index-type)))
(acc : Void))
:
(values
(U
(Promise
m-streets4/node61/with-promises-type)
(Listof
(Promise Street59/with-promises-type)))
Void)
(cond
(((λ (x)
(and (pair? x)
(eq?
(car x)
'm-streets4/node49/with-indices-tag2)))
val)
((ann
(λ ((tagged-index
:
m-streets4/node53/index-type)
(acc : Void))
:
(values
(Promise
m-streets4/node61/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
m-streets4/node77/database
(cadr tagged-index))))
(delay
(m-streets4/node57/with-indices→with-promises
successor-with-index)))
acc))
(
m-streets4/node53/index-type
Void
(values
(Promise
m-streets4/node61/with-promises-type)
Void)))
val
acc))
(#t
((λ ((val : (Listof Street51/index-type))
(acc : Void))
:
(values
(Listof
(Promise
Street59/with-promises-type))
Void)
(let ((f
((inst
foldl
Street51/index-type
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : Street51/index-type)
(acc1
:
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
Street51/index-type)
(acc
:
Void))
:
(values
(Promise
Street59/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
Street75/database
(cadr
tagged-index))))
(delay
(Street55/with-indices→with-promises
successor-with-index)))
acc))
(
Street51/index-type
Void
(values
(Promise
Street59/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
val
acc))
(else
(typecheck-fail
(U
m-streets4/node53/index-type
(Listof Street51/index-type))
"Unhandled union case in (U m-streets4/node53/index-type (Listof Street51/index-type)), whole type was:(List (U m-streets4/node53/index-type (Listof Street51/index-type)))"))))
temp141
acc)))
(values (list temp142) temp143)))))
(apply City62/make-with-promises (first-value (f (cdr n) (void))))))
(begin
(:
Street55/with-indices→with-promises
( Street35/with-indices-type Street59/with-promises-type))
(define (Street55/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List String)
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List String)) (acc : Void))
:
(values (List String) Void)
(let*-values (((String151) (apply values val))
((String152 String153)
((inst values String Void) String151 acc)))
(values (list String152) String153)))))
(apply
Street63/make-with-promises
(first-value (f (cdr n) (void))))))
(begin
(:
m-cities3/node56/with-indices→with-promises
(
m-cities3/node36/with-indices-type
m-cities3/node60/with-promises-type))
(define (m-cities3/node56/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof City50/index-type))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List (Listof City50/index-type))) (acc : Void))
:
(values
(List (Listof (Promise City58/with-promises-type)))
Void)
(let*-values (((temp156) (apply values val))
((temp157 temp158)
((λ ((val : (Listof City50/index-type))
(acc : Void))
:
(values
(Listof
(Promise City58/with-promises-type))
Void)
(let ((f
((inst
foldl
City50/index-type
(Pairof
(Listof
(Promise
City58/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : City50/index-type)
(acc1
:
(Pairof
(Listof
(Promise
City58/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
City50/index-type)
(acc : Void))
:
(values
(Promise
City58/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
City74/database
(cadr
tagged-index))))
(delay
(City54/with-indices→with-promises
successor-with-index)))
acc))
(
City50/index-type
Void
(values
(Promise
City58/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp156
acc)))
(values (list temp157) temp158)))))
(apply
m-cities3/node64/make-with-promises
(first-value (f (cdr n) (void))))))
(begin
(:
m-streets4/node57/with-indices→with-promises
(
m-streets4/node37/with-indices-type
m-streets4/node61/with-promises-type))
(define (m-streets4/node57/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof Street51/index-type))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List (Listof Street51/index-type))) (acc : Void))
:
(values
(List (Listof (Promise Street59/with-promises-type)))
Void)
(let*-values (((temp163) (apply values val))
((temp164 temp165)
((λ ((val : (Listof Street51/index-type))
(acc : Void))
:
(values
(Listof
(Promise Street59/with-promises-type))
Void)
(let ((f
((inst
foldl
Street51/index-type
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : Street51/index-type)
(acc1
:
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
Street51/index-type)
(acc : Void))
:
(values
(Promise
Street59/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
Street75/database
(cadr
tagged-index))))
(delay
(Street55/with-indices→with-promises
successor-with-index)))
acc))
(
Street51/index-type
Void
(values
(Promise
Street59/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp163
acc)))
(values (list temp164) temp165)))))
(apply
m-streets4/node65/make-with-promises
(first-value (f (cdr n) (void))))))
(delay
(Street55/with-indices→with-promises
(vector-ref Street75/database 0))))))
(begin
(:
m-cities3/node4/constructor
(
(Listof (Listof String))
(Promise m-cities3/node60/with-promises-type)))
(define (m-cities3/node4/constructor cnames)
(match-let
(((list
City74/database
Street75/database
m-cities3/node76/database
m-streets4/node77/database)
(fq
'm-cities3/node20/placeholder-queue
(m-cities3/node8/make-placeholder cnames))))
(begin
(:
City54/with-indices→with-promises
( City34/with-indices-type City58/with-promises-type))
(define (City54/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List
(U
m-streets4/node53/index-type
(Listof Street51/index-type)))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val
:
(List
(U
m-streets4/node53/index-type
(Listof Street51/index-type))))
(acc : Void))
:
(values
(List
(U
(Promise m-streets4/node61/with-promises-type)
(Listof (Promise Street59/with-promises-type))))
Void)
(let*-values (((temp170) (apply values val))
((temp171 temp172)
((λ ((val
:
(U
m-streets4/node53/index-type
(Listof Street51/index-type)))
(acc : Void))
:
(values
(U
(Promise
m-streets4/node61/with-promises-type)
(Listof
(Promise Street59/with-promises-type)))
Void)
(cond
(((λ (x)
(and (pair? x)
(eq?
(car x)
'm-streets4/node49/with-indices-tag2)))
val)
((ann
(λ ((tagged-index
:
m-streets4/node53/index-type)
(acc : Void))
:
(values
(Promise
m-streets4/node61/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
m-streets4/node77/database
(cadr tagged-index))))
(delay
(m-streets4/node57/with-indices→with-promises
successor-with-index)))
acc))
(
m-streets4/node53/index-type
Void
(values
(Promise
m-streets4/node61/with-promises-type)
Void)))
val
acc))
(#t
((λ ((val : (Listof Street51/index-type))
(acc : Void))
:
(values
(Listof
(Promise
Street59/with-promises-type))
Void)
(let ((f
((inst
foldl
Street51/index-type
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : Street51/index-type)
(acc1
:
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
Street51/index-type)
(acc
:
Void))
:
(values
(Promise
Street59/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
Street75/database
(cadr
tagged-index))))
(delay
(Street55/with-indices→with-promises
successor-with-index)))
acc))
(
Street51/index-type
Void
(values
(Promise
Street59/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
val
acc))
(else
(typecheck-fail
(U
m-streets4/node53/index-type
(Listof Street51/index-type))
"Unhandled union case in (U m-streets4/node53/index-type (Listof Street51/index-type)), whole type was:(List (U m-streets4/node53/index-type (Listof Street51/index-type)))"))))
temp170
acc)))
(values (list temp171) temp172)))))
(apply City62/make-with-promises (first-value (f (cdr n) (void))))))
(begin
(:
Street55/with-indices→with-promises
( Street35/with-indices-type Street59/with-promises-type))
(define (Street55/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List String)
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List String)) (acc : Void))
:
(values (List String) Void)
(let*-values (((String180) (apply values val))
((String181 String182)
((inst values String Void) String180 acc)))
(values (list String181) String182)))))
(apply
Street63/make-with-promises
(first-value (f (cdr n) (void))))))
(begin
(:
m-cities3/node56/with-indices→with-promises
(
m-cities3/node36/with-indices-type
m-cities3/node60/with-promises-type))
(define (m-cities3/node56/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof City50/index-type))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List (Listof City50/index-type))) (acc : Void))
:
(values
(List (Listof (Promise City58/with-promises-type)))
Void)
(let*-values (((temp185) (apply values val))
((temp186 temp187)
((λ ((val : (Listof City50/index-type))
(acc : Void))
:
(values
(Listof
(Promise City58/with-promises-type))
Void)
(let ((f
((inst
foldl
City50/index-type
(Pairof
(Listof
(Promise
City58/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : City50/index-type)
(acc1
:
(Pairof
(Listof
(Promise
City58/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
City50/index-type)
(acc : Void))
:
(values
(Promise
City58/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
City74/database
(cadr
tagged-index))))
(delay
(City54/with-indices→with-promises
successor-with-index)))
acc))
(
City50/index-type
Void
(values
(Promise
City58/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp185
acc)))
(values (list temp186) temp187)))))
(apply
m-cities3/node64/make-with-promises
(first-value (f (cdr n) (void))))))
(begin
(:
m-streets4/node57/with-indices→with-promises
(
m-streets4/node37/with-indices-type
m-streets4/node61/with-promises-type))
(define (m-streets4/node57/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof Street51/index-type))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List (Listof Street51/index-type))) (acc : Void))
:
(values
(List (Listof (Promise Street59/with-promises-type)))
Void)
(let*-values (((temp192) (apply values val))
((temp193 temp194)
((λ ((val : (Listof Street51/index-type))
(acc : Void))
:
(values
(Listof
(Promise Street59/with-promises-type))
Void)
(let ((f
((inst
foldl
Street51/index-type
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : Street51/index-type)
(acc1
:
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
Street51/index-type)
(acc : Void))
:
(values
(Promise
Street59/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
Street75/database
(cadr
tagged-index))))
(delay
(Street55/with-indices→with-promises
successor-with-index)))
acc))
(
Street51/index-type
Void
(values
(Promise
Street59/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp192
acc)))
(values (list temp193) temp194)))))
(apply
m-streets4/node65/make-with-promises
(first-value (f (cdr n) (void))))))
(delay
(m-cities3/node56/with-indices→with-promises
(vector-ref m-cities3/node76/database 0))))))
(begin
(:
m-streets4/node5/constructor
( (Listof String) (Promise m-streets4/node61/with-promises-type)))
(define (m-streets4/node5/constructor snames)
(match-let
(((list
City74/database
Street75/database
m-cities3/node76/database
m-streets4/node77/database)
(fq
'm-streets4/node21/placeholder-queue
(m-streets4/node9/make-placeholder snames))))
(begin
(:
City54/with-indices→with-promises
( City34/with-indices-type City58/with-promises-type))
(define (City54/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List
(U
m-streets4/node53/index-type
(Listof Street51/index-type)))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val
:
(List
(U
m-streets4/node53/index-type
(Listof Street51/index-type))))
(acc : Void))
:
(values
(List
(U
(Promise m-streets4/node61/with-promises-type)
(Listof (Promise Street59/with-promises-type))))
Void)
(let*-values (((temp199) (apply values val))
((temp200 temp201)
((λ ((val
:
(U
m-streets4/node53/index-type
(Listof Street51/index-type)))
(acc : Void))
:
(values
(U
(Promise
m-streets4/node61/with-promises-type)
(Listof
(Promise Street59/with-promises-type)))
Void)
(cond
(((λ (x)
(and (pair? x)
(eq?
(car x)
'm-streets4/node49/with-indices-tag2)))
val)
((ann
(λ ((tagged-index
:
m-streets4/node53/index-type)
(acc : Void))
:
(values
(Promise
m-streets4/node61/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
m-streets4/node77/database
(cadr tagged-index))))
(delay
(m-streets4/node57/with-indices→with-promises
successor-with-index)))
acc))
(
m-streets4/node53/index-type
Void
(values
(Promise
m-streets4/node61/with-promises-type)
Void)))
val
acc))
(#t
((λ ((val : (Listof Street51/index-type))
(acc : Void))
:
(values
(Listof
(Promise
Street59/with-promises-type))
Void)
(let ((f
((inst
foldl
Street51/index-type
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : Street51/index-type)
(acc1
:
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
Street51/index-type)
(acc
:
Void))
:
(values
(Promise
Street59/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
Street75/database
(cadr
tagged-index))))
(delay
(Street55/with-indices→with-promises
successor-with-index)))
acc))
(
Street51/index-type
Void
(values
(Promise
Street59/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
val
acc))
(else
(typecheck-fail
(U
m-streets4/node53/index-type
(Listof Street51/index-type))
"Unhandled union case in (U m-streets4/node53/index-type (Listof Street51/index-type)), whole type was:(List (U m-streets4/node53/index-type (Listof Street51/index-type)))"))))
temp199
acc)))
(values (list temp200) temp201)))))
(apply City62/make-with-promises (first-value (f (cdr n) (void))))))
(begin
(:
Street55/with-indices→with-promises
( Street35/with-indices-type Street59/with-promises-type))
(define (Street55/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List String)
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List String)) (acc : Void))
:
(values (List String) Void)
(let*-values (((String209) (apply values val))
((String210 String211)
((inst values String Void) String209 acc)))
(values (list String210) String211)))))
(apply
Street63/make-with-promises
(first-value (f (cdr n) (void))))))
(begin
(:
m-cities3/node56/with-indices→with-promises
(
m-cities3/node36/with-indices-type
m-cities3/node60/with-promises-type))
(define (m-cities3/node56/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof City50/index-type))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List (Listof City50/index-type))) (acc : Void))
:
(values
(List (Listof (Promise City58/with-promises-type)))
Void)
(let*-values (((temp214) (apply values val))
((temp215 temp216)
((λ ((val : (Listof City50/index-type))
(acc : Void))
:
(values
(Listof
(Promise City58/with-promises-type))
Void)
(let ((f
((inst
foldl
City50/index-type
(Pairof
(Listof
(Promise
City58/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : City50/index-type)
(acc1
:
(Pairof
(Listof
(Promise
City58/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
City50/index-type)
(acc : Void))
:
(values
(Promise
City58/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
City74/database
(cadr
tagged-index))))
(delay
(City54/with-indices→with-promises
successor-with-index)))
acc))
(
City50/index-type
Void
(values
(Promise
City58/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp214
acc)))
(values (list temp215) temp216)))))
(apply
m-cities3/node64/make-with-promises
(first-value (f (cdr n) (void))))))
(begin
(:
m-streets4/node57/with-indices→with-promises
(
m-streets4/node37/with-indices-type
m-streets4/node61/with-promises-type))
(define (m-streets4/node57/with-indices→with-promises n)
(define f
(begin
"fold-instance expanded code below. Initially called with:"
'(fold-instance
(List (Listof Street51/index-type))
Void
(City50/index-type
(Promise City58/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'City46/with-indices-tag2)))
λ…)
(Street51/index-type
(Promise Street59/with-promises-type)
(λ (x)
(and (pair? x) (eq? (car x) 'Street47/with-indices-tag2)))
λ…)
(m-cities3/node52/index-type
(Promise m-cities3/node60/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-cities3/node48/with-indices-tag2)))
λ…)
(m-streets4/node53/index-type
(Promise m-streets4/node61/with-promises-type)
(λ (x)
(and (pair? x)
(eq? (car x) 'm-streets4/node49/with-indices-tag2)))
λ…))
(λ ((val : (List (Listof Street51/index-type))) (acc : Void))
:
(values
(List (Listof (Promise Street59/with-promises-type)))
Void)
(let*-values (((temp221) (apply values val))
((temp222 temp223)
((λ ((val : (Listof Street51/index-type))
(acc : Void))
:
(values
(Listof
(Promise Street59/with-promises-type))
Void)
(let ((f
((inst
foldl
Street51/index-type
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)
Nothing
Nothing)
(λ ((x : Street51/index-type)
(acc1
:
(Pairof
(Listof
(Promise
Street59/with-promises-type))
Void)))
(let-values (((res res-acc)
((ann
(λ ((tagged-index
:
Street51/index-type)
(acc : Void))
:
(values
(Promise
Street59/with-promises-type)
Void)
(values
(let ((successor-with-index
(vector-ref
Street75/database
(cadr
tagged-index))))
(delay
(Street55/with-indices→with-promises
successor-with-index)))
acc))
(
Street51/index-type
Void
(values
(Promise
Street59/with-promises-type)
Void)))
x
(cdr acc1))))
(cons
(cons res (car acc1))
res-acc)))
(cons '() acc)
val)))
(values (reverse (car f)) (cdr f))))
temp221
acc)))
(values (list temp222) temp223)))))
(apply
m-streets4/node65/make-with-promises
(first-value (f (cdr n) (void))))))
(delay
(m-streets4/node57/with-indices→with-promises
(vector-ref m-streets4/node77/database 0)))))))
<graph-rich-return>)]
@chunk[<module-test>
(module* test typed/racket
(require (submod "..")
typed/rackunit)
#;<test-graph-rich-return>)]
@chunk[<*>
(begin
<module-main>
(require 'main)
(provide (all-from-out 'main))
<module-test>)]