From 91328d65ff872c86ee23f38e87793b853b6404ea Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Thu, 15 Nov 2007 16:16:43 +0100 Subject: [PATCH] Nicer, recursive implementation of read-hl. --- lib/guile/hubmgr | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/lib/guile/hubmgr b/lib/guile/hubmgr index 5d8de74..8da04f5 100755 --- a/lib/guile/hubmgr +++ b/lib/guile/hubmgr @@ -50,22 +50,18 @@ (list r1 r2 l2))) (define (read-hl) - (catch 'system-error - (lambda () - (let ((p (open-input-file hl-file))) - (catch 'eof - (lambda () - (let ((lines '())) - (while #t - (let ((line (read-line p))) - (if (eof-object? line) - (throw 'eof lines) - (let ((lexed (dc-lexsexpr line))) - (if (> (length lexed) 0) - (set! lines (append lines (list lexed)))))))))) - (lambda (s a) (close-port p) a)))) - (lambda (key . args) - '()))) + (letrec ((read-lines (lambda (lines p) + (let ((line (read-line p))) + (if (eof-object? line) + (begin (close-port p) + lines) + (read-lines (let ((lexed (dc-lexsexpr line))) + (if (> (length lexed) 0) + (append lines (list lexed)) + lines)) p)))))) + (catch 'system-error + (lambda () (read-lines '() (open-input-file hl-file))) + (lambda (key . args) '())))) (define (cklist) (set! statelist (let ((nl '()) (ct (current-time))) -- 2.11.0