From b482a919615c0a5755a6828ad77d13e6c1b8b7a2 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sun, 9 Jan 2022 16:28:52 -0800 Subject: Remove str- prefixes from the strings library. Not very scheme. --- strings.csc | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'strings.csc') diff --git a/strings.csc b/strings.csc index 963565c..0828363 100644 --- a/strings.csc +++ b/strings.csc @@ -1,8 +1,8 @@ (define-library (csc strings) (export - str-find - str-not-found-error? - str-prefix? + find + not-found-error? + prefix? str-quote) (import (scheme base) (scheme case-lambda) @@ -10,13 +10,12 @@ (begin - (define str-prefix? - (let ((str-prefix?' (lambda (prefix str start) - (and (<= (string-length prefix) (- (string-length str) start)) - (string=? prefix (substring str start (+ start (string-length prefix)))))))) - (case-lambda - ((prefix str) (str-prefix?' prefix str 0)) - ((prefix str start) (str-prefix?' prefix str start))))) + (define prefix? + (case-lambda + ((prefix str) (prefix? prefix str 0)) + ((prefix str start) + (and (<= (string-length prefix) (- (string-length str) start)) + (string=? prefix (substring str start (+ start (string-length prefix)))))))) (define (str-quote s) @@ -25,18 +24,17 @@ (get-output-string out))) - (define-record-type - (make-str-not-found-error) - str-not-found-error?) + (define-record-type + (make-not-found-error) + not-found-error?) - (define str-find - (let ((str-find' (lambda (match str start end) - (let loop ((i start)) - (cond ((>= i end) (raise (make-str-not-found-error))) - ((str-prefix? match str i) i) - (else (loop (+ 1 i)))))))) - (case-lambda - ((match str) (str-find' match str 0 (string-length str))) - ((match str start) (str-find' match str start (string-length str))) - ((match str start end) (str-find' match str start end))))))) + (define find + (case-lambda + ((match str) (find match str 0 (string-length str))) + ((match str start) (find match str start (string-length str))) + ((match str start end) + (let loop ((i start)) + (cond ((>= i end) (raise (make-not-found-error))) + ((prefix? match str i) i) + (else (loop (+ 1 i)))))))))) -- cgit v1.3.1