emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why (substring "abc" 0 4) does not return "abc" instead of an error?


From: Juanma Barranquero
Subject: Re: Why (substring "abc" 0 4) does not return "abc" instead of an error?
Date: Mon, 16 Jul 2012 02:10:37 +0200

On Mon, Jul 16, 2012 at 1:59 AM, Bastien <address@hidden> wrote:

> I read (substring "abc" 0 4) as "return the biggest substring
> between 0 and 4" -- even if the string does not have 4 characters.

"Even if the string does not have 4 characters" is not even suggested
in substring's doc.

> Surely I misread, but this would be handy in some cases, instead
> of using something like (format "%.4s" "abc").

Would it be handy? Sometimes, perhaps. At other times, having
substring check that TO is indeed in range is quite useful. Also, if
you start with substring, then it will be buffer-substring, and then
most functions that deal with string ranges, and then buffer ranges?
I'm sure use cases could be found for all these functions where your
expansive interpretation would be handy...

BTW, for unexpected behavior wrt strings, my favourite is this one
(it's not a bug);

(let ((s "ab") (m 2)) (eq (substring s 0 m) (substring s 0 m))) => nil
(let ((s "ab") (m 1)) (eq (substring s 0 m) (substring s 0 m))) => nil
(let ((s "ab") (m 0)) (eq (substring s 0 m) (substring s 0 m))) => t

    Juanma



reply via email to

[Prev in Thread] Current Thread [Next in Thread]