mes: Support predicate with string-index.
* module/srfi/srfi-13.mes (string-index): Support predicate.
This commit is contained in:
parent
8f4b64fda7
commit
20b3c349bf
|
@ -66,11 +66,11 @@
|
||||||
|
|
||||||
(define (string-index s pred . rest)
|
(define (string-index s pred . rest)
|
||||||
(let* ((start (and (pair? rest) (car rest)))
|
(let* ((start (and (pair? rest) (car rest)))
|
||||||
(end (and start (pair? (cdr rest)) (cadr rest))))
|
(end (and start (pair? (cdr rest)) (cadr rest)))
|
||||||
(if (not (char? pred)) (error "string-index: not supported: pred=" pred))
|
(pred (if (char? pred) (lambda (c) (eq? c pred)) pred)))
|
||||||
(if start (error "string-index: not supported: start=" start))
|
(if start (error "string-index: not supported: start=" start))
|
||||||
(if end (error "string-index: not supported: end=" end))
|
(if end (error "string-index: not supported: end=" end))
|
||||||
(let loop ((lst (string->list s)) (i 0))
|
(let loop ((lst (string->list s)) (i 0))
|
||||||
(if (null? lst) #f
|
(if (null? lst) #f
|
||||||
(if (eq? (car lst) pred) i
|
(if (pred (car lst)) i
|
||||||
(loop (cdr lst) (1+ i)))))))
|
(loop (cdr lst) (1+ i)))))))
|
||||||
|
|
Loading…
Reference in a new issue