15 lines
465 B
Racket
15 lines
465 B
Racket
#lang racket
|
|
|
|
(define (pipe-fringe tree)
|
|
(define-values [I O] (make-pipe 100))
|
|
(thread (λ() (let loop ([tree tree])
|
|
(if (list? tree) (for-each loop tree) (fprintf O "~s\n" tree)))
|
|
(close-output-port O)))
|
|
I)
|
|
|
|
(define (same-fringe? tree1 tree2)
|
|
(define i1 (pipe-fringe tree1))
|
|
(define i2 (pipe-fringe tree2))
|
|
(let loop ()
|
|
(let ([x1 (read i1)] [x2 (read i2)])
|
|
(and (equal? x1 x2) (or (eof-object? x1) (loop))))))
|