From 045c15f6140124a2763068f96d3f177e55bb36f5 Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Thu, 6 Aug 1992 13:45:41 +0000 Subject: [PATCH] Eliminate some spurious consing. --- v7/src/runtime/dosdir.scm | 53 ++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/v7/src/runtime/dosdir.scm b/v7/src/runtime/dosdir.scm index 21ad73f69..03d5dd82e 100644 --- a/v7/src/runtime/dosdir.scm +++ b/v7/src/runtime/dosdir.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/dosdir.scm,v 1.2 1992/08/06 13:40:16 jinx Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/runtime/dosdir.scm,v 1.3 1992/08/06 13:45:41 jinx Exp $ Copyright (c) 1992 Massachusetts Institute of Technology @@ -96,38 +96,35 @@ MIT in each case. |# (let* ((len (string-length pattern)) (min-len (-1+ len))) (cond ((zero? posn) - (let ((suffix (substring pattern 1 len))) - (lambda (instance) - (and (string? instance) - (let ((len* (string-length instance))) - (and (>= len* min-len) - (string=? suffix - (substring instance - (- len* min-len) - len*)))))))) + (lambda (instance) + (and (string? instance) + (let ((len* (string-length instance))) + (and (>= len* min-len) + (substring=? + pattern 1 len + instance (- len* min-len) len*)))))) ((= posn (-1+ len)) - (let ((prefix (substring pattern 0 min-len))) - (lambda (instance) - (and (string? instance) - (let ((len* (string-length instance))) - (and (>= len* min-len) - (string=? prefix - (substring instance 0 - min-len)))))))) + (lambda (instance) + (and (string? instance) + (let ((len* (string-length instance))) + (and (>= len* min-len) + (substring=? + pattern 0 min-len + instance 0 min-len)))))) (else - (let ((prefix (substring pattern 0 posn)) - (suffix (substring pattern (1+ posn) len)) - (suffix-len (- len (1+ posn)))) + (let* ((suffix-start (1+ posn)) + (suffix-len (- len suffix-start))) (lambda (instance) (and (string? instance) (let ((len* (string-length instance))) - (and (>= len* min-len) - (string=? prefix - (substring instance 0 posn)) - (string=? suffix - (substring instance - (- len* suffix-len) - len*)))))))))))) + (and + (>= len* min-len) + (substring=? + pattern 0 posn + instance 0 posn) + (substring=? + pattern suffix-start len + instance (- len* suffix-len) len*))))))))))) (else (lambda (instance) (equal? pattern instance))))) -- 2.25.1