(define (make-string-prefix-test proc) (lambda (s1 s2 . opt) (cond ((null? opt) (and (<= (string-length s1) (string-length s2)) (proc s1 s2))) ; <== this line (else (with-two-substring-offsets (lambda (s1 s2 start1 end1 start2 end2) (let ((s1-len (- end1 start1)) (s2-len (- end2 start2))) (and (<= s1-len s2-len) (proc s1 s2 start1 start2 s1-len)))) s1 s2 opt))))) (define string-prefix? (make-string-prefix-test substring=?)) (define string-prefix-ci? (make-string-prefix-test substring-ci=?))