mes: string-drop: Error on negative droppings.
[mes.git] / module / srfi / srfi-13.mes
index bf6a06e930b3a689bd3c7405a0fc1e9bbcd15d9c..859e51601e1cf199aedde5bab153efb52aec370c 100644 (file)
                         (list (list->string (list-head lst (- (length lst) (length rest)))))))))))
 
 (define (string-take s n)
-  (list->string (list-head (string->list s) n)))
+  (cond ((zero? n) s)
+        ((> n 0) (list->string (list-head (string->list s) n)))
+        (else (error "string-take: not supported: n=" n))))
 
 (define (string-drop s n)
-  (list->string (list-tail (string->list s) n)))
+  (cond ((zero? n) s)
+        ((> n 0) (list->string (list-tail (string->list s) n)))
+        (else s (error "string-drop: not supported: (n s)=" (cons n s)))))
 
 (define (string-drop-right s n)
-  (let ((length (string-length s)))
-    (list->string (list-head (string->list s) (- length n)))))
+  (cond ((zero? n) s)
+        ((> n 0) (let ((length (string-length s)))
+                   (list->string (list-head (string->list s) (- length n)))))
+        (else (error "string-drop-right: not supported: n=" n))))
 
 (define (string-delete pred s)
   (let ((p (if (procedure? pred) pred