RosettaCodeData/Task/Same-Fringe/Racket/same-fringe-4.rkt
2015-11-18 06:14:39 +00:00

14 lines
391 B
Racket

#lang racket
(require racket/generator)
(define (fringe-generator tree)
(generator ()
(let loop ([tree tree])
(if (list? tree) (for-each loop tree) (yield tree)))))
(define (same-fringe? tree1 tree2)
(define g1 (fringe-generator tree1))
(define g2 (fringe-generator tree2))
(let loop ()
(let ([x1 (g1)] [x2 (g2)])
(and (equal? x1 x2) (or (void? x1) (loop))))))