Skip to content

Commit 0e1dbf3

Browse files
committed
fix a bug where finite enums were considered infinite
1 parent cd2b520 commit 0e1dbf3

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

redex-lib/redex/private/preprocess-lang.rkt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,7 @@
192192
;; spanning-tree : HyperGraph -> (Listof (List Index (Setof NTName))) (Listof NTName)
193193
(define (spanning-tree hg)
194194
(define init-vertices (hash-keys hg))
195-
(let loop ([sinks (set)]
196-
[edges (hash)]
195+
(let loop ([edges (hash)]
197196
[vertices init-vertices]
198197
[time (length init-vertices)])
199198
(cond
@@ -202,15 +201,14 @@
202201
[else
203202
(match-define (cons v vs) vertices)
204203
(define good-edge
205-
(findf (λ (e) (andmap (λ (v) (set-member? sinks v)) (set->list (second e))))
204+
(findf (λ (e) (andmap (λ (v2) (not (member v2 vertices))) (set->list (second e))))
206205
(hash-ref hg v)))
207206
(cond [good-edge
208-
(loop (set-add sinks v)
209-
(hash-set edges v good-edge)
207+
(loop (hash-set edges v good-edge)
210208
vs
211209
(sub1 time))]
212210
[else
213-
(loop sinks edges (append vs (list v)) (sub1 time))])])))
211+
(loop edges (append vs (list v)) (sub1 time))])])))
214212

215213
;; A HyperGraph is a Hash NTName (Listof (List Index (Setof NTName)))
216214
;; associating each non-terminal to a list of out-going edges

0 commit comments

Comments
 (0)