From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Newsgroups: gmane.emacs.bugs Subject: bug#40671: [DOC] modify literal objects Date: Fri, 17 Apr 2020 18:37:23 +0200 Message-ID: References: <0B653323-49E1-4AC7-A85B-18346D220585@acm.org> Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.14\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_5781C227-1A23-46FD-9E9D-ED3BE42938E6" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="93347"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Kevin Vigouroux To: 40671@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Apr 17 18:38:11 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jPU0J-000OCj-2w for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 17 Apr 2020 18:38:11 +0200 Original-Received: from localhost ([::1]:49614 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jPU0I-0004Ih-59 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 17 Apr 2020 12:38:10 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48741) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jPU0B-0004IQ-48 for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 12:38:03 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jPU0A-0005f8-5V for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 12:38:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:58272) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jPU0A-0005ep-03 for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 12:38:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jPU09-0004jN-T2 for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 12:38:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 17 Apr 2020 16:38:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40671 X-GNU-PR-Package: emacs Original-Received: via spool by 40671-submit@debbugs.gnu.org id=B40671.158714145718151 (code B ref 40671); Fri, 17 Apr 2020 16:38:01 +0000 Original-Received: (at 40671) by debbugs.gnu.org; 17 Apr 2020 16:37:37 +0000 Original-Received: from localhost ([127.0.0.1]:41585 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPTzl-0004ic-B7 for submit@debbugs.gnu.org; Fri, 17 Apr 2020 12:37:37 -0400 Original-Received: from mail233c50.megamailservers.eu ([91.136.10.243]:45480 helo=mail37c50.megamailservers.eu) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPTzg-0004iJ-4a; Fri, 17 Apr 2020 12:37:35 -0400 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1587141449; bh=WKgN6ktHg8Mce3bVFVHx/1+TAEVmTviLzRzCP8ZG4m8=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From; b=SicNiA/w9wneOSbWPsrusV9HVfjR9xq1eEevr/C2kz9IAg7gZwNT1HX9X5WfEDpJS gZ1HPVr2zdeaoZrZEgWvO22OlQ6iMqDTm5+MI/2XV+LnroGPW8FFb/4YGE1QuEy4Hn puyN37LPTsGhUYtTVYeXzjesr5WtwDLRH7kVTE08= Feedback-ID: mattiase@acm.or Original-Received: from [192.168.0.4] (c188-150-171-71.bredband.comhem.se [188.150.171.71]) (authenticated bits=0) by mail37c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id 03HGbNPv024341; Fri, 17 Apr 2020 16:37:27 +0000 In-Reply-To: <0B653323-49E1-4AC7-A85B-18346D220585@acm.org> X-Mailer: Apple Mail (2.3445.104.14) X-CTCH-RefID: str=0001.0A782F22.5E99DB18.0050, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=bJNo382Z c=1 sm=1 tr=0 a=SF+I6pRkHZhrawxbOkkvaA==:117 a=SF+I6pRkHZhrawxbOkkvaA==:17 a=M51BFTxLslgA:10 a=08160T5Cf-sCvJ5efqMA:9 a=CjuIK1q_8ugA:10 a=WTIvEUZ3qfsVv6ZZjfcA:9 a=B2y7HmGcmWMA:10 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:178532 Archived-At: --Apple-Mail=_5781C227-1A23-46FD-9E9D-ED3BE42938E6 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii tags 40671 patch stop [Sorry about the truncated message.] > Can we modify literal objects?=20 No, and the manual should do a much better job at explaining this. At = the very least it should not promulgate bad ideas by including mutation = of literals in example code. Patch attached, suggested for emacs-27. We should not even try to show what happens when the user breaks the = rule, because it is undefined. --Apple-Mail=_5781C227-1A23-46FD-9E9D-ED3BE42938E6 Content-Disposition: attachment; filename=0001-Don-t-mutate-literals-in-manual-examples-bug-40671.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-Don-t-mutate-literals-in-manual-examples-bug-40671.patch" Content-Transfer-Encoding: quoted-printable =46rom=209801ee1b12574f8b1b50ba5b76b7ee41a7fb8bc4=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20=3D?UTF-8?q?Mattias=3D20Engdeg=3DC3=3DA5rd?=3D=20= =0ADate:=20Fri,=2017=20Apr=202020=2018:00:34=20+0200=0A= Subject:=20[PATCH]=20Don't=20mutate=20literals=20in=20manual=20examples=20= (bug#40671)=0A=0A*=20doc/lispref/edebug.texi=20(Printing=20in=20Edebug):=0A= *=20doc/lispref/keymaps.texi=20(Changing=20Key=20Bindings):=0A*=20= doc/lispref/lists.texi=20(Setcar,=20Setcdr,=20Rearrangement,=20Sets=20= And=20Lists)=0A(Association=20Lists,=20Plist=20Access):=0A*=20= doc/lispref/sequences.texi=20(Sequence=20Functions,=20Array=20= Functions):=0A*=20doc/lispref/strings.texi=20(Text=20Comparison):=0A= Rewrite=20example=20code=20to=20not=20mutate=20constant=20(literal)=20= lists,=20vectors=0Aor=20strings.=20=20Noticed=20by=20Kevin=20Vigouroux.=0A= ---=0A=20doc/lispref/edebug.texi=20=20=20=20|=20=202=20+-=0A=20= doc/lispref/keymaps.texi=20=20=20|=20=208=20++---=0A=20= doc/lispref/lists.texi=20=20=20=20=20|=2062=20= +++++++++-----------------------------=0A=20doc/lispref/sequences.texi=20= |=2026=20++++++++--------=0A=20doc/lispref/strings.texi=20=20=20|=20=204=20= +--=0A=205=20files=20changed,=2034=20insertions(+),=2068=20deletions(-)=0A= =0Adiff=20--git=20a/doc/lispref/edebug.texi=20b/doc/lispref/edebug.texi=0A= index=20cfef5c12d1..5970e7cf80=20100644=0A---=20= a/doc/lispref/edebug.texi=0A+++=20b/doc/lispref/edebug.texi=0A@@=20= -858,7=20+858,7=20@@=20Printing=20in=20Edebug=0A=20=20=20Here=20is=20an=20= example=20of=20code=20that=20creates=20a=20circular=20structure:=0A=20=0A= =20@example=0A-(setq=20a=20'(x=20y))=0A+(setq=20a=20(list=20'x=20'y))=0A=20= (setcar=20a=20a)=0A=20@end=20example=0A=20=0Adiff=20--git=20= a/doc/lispref/keymaps.texi=20b/doc/lispref/keymaps.texi=0Aindex=20= 2c90d208c0..fd207a184e=20100644=0A---=20a/doc/lispref/keymaps.texi=0A+++=20= b/doc/lispref/keymaps.texi=0A@@=20-1441,10=20+1441,10=20@@=20Changing=20= Key=20Bindings=0A=20=0A=20@smallexample=0A=20@group=0A-(setq=20map=20= '(keymap=0A-=20=20=20=20=20=20=20=20=20=20=20=20(?1=20.=20olddef-1)=0A-=20= =20=20=20=20=20=20=20=20=20=20=20(?2=20.=20olddef-2)=0A-=20=20=20=20=20=20= =20=20=20=20=20=20(?3=20.=20olddef-1)))=0A+(setq=20map=20(list=20'keymap=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20?1=20'olddef-1)=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20?2=20'olddef-2)=0A= +=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20?3=20= 'olddef-1)))=0A=20@result{}=20(keymap=20(49=20.=20olddef-1)=20(50=20.=20= olddef-2)=20(51=20.=20olddef-1))=0A=20@end=20group=0A=20=0Adiff=20--git=20= a/doc/lispref/lists.texi=20b/doc/lispref/lists.texi=0Aindex=20= 27fa5385e3..d1a12e9819=20100644=0A---=20a/doc/lispref/lists.texi=0A+++=20= b/doc/lispref/lists.texi=0A@@=20-906,7=20+906,7=20@@=20Setcar=0A=20=0A=20= @example=0A=20@group=0A-(setq=20x=20'(1=202))=0A+(setq=20x=20(list=201=20= 2))=0A=20=20=20=20=20=20@result{}=20(1=202)=0A=20@end=20group=0A=20= @group=0A@@=20-927,7=20+927,7=20@@=20Setcar=0A=20@example=0A=20@group=0A=20= ;;=20@r{Create=20two=20lists=20that=20are=20partly=20shared.}=0A-(setq=20= x1=20'(a=20b=20c))=0A+(setq=20x1=20(list=20'a=20'b=20'c))=0A=20=20=20=20=20= =20@result{}=20(a=20b=20c)=0A=20(setq=20x2=20(cons=20'z=20(cdr=20x1)))=0A= =20=20=20=20=20=20@result{}=20(z=20b=20c)=0A@@=20-1017,7=20+1017,7=20@@=20= Setcdr=0A=20=0A=20@example=0A=20@group=0A-(setq=20x=20'(1=202=203))=0A= +(setq=20x=20(list=201=202=203))=0A=20=20=20=20=20=20@result{}=20(1=202=20= 3)=0A=20@end=20group=0A=20@group=0A@@=20-1037,7=20+1037,7=20@@=20Setcdr=0A= =20=0A=20@example=0A=20@group=0A-(setq=20x1=20'(a=20b=20c))=0A+(setq=20= x1=20(list=20'a=20'b=20'c))=0A=20=20=20=20=20=20@result{}=20(a=20b=20c)=0A= =20(setcdr=20x1=20(cdr=20(cdr=20x1)))=0A=20=20=20=20=20=20@result{}=20= (c)=0A@@=20-1069,7=20+1069,7=20@@=20Setcdr=0A=20=0A=20@example=0A=20= @group=0A-(setq=20x1=20'(a=20b=20c))=0A+(setq=20x1=20(list=20'a=20'b=20= 'c))=0A=20=20=20=20=20=20@result{}=20(a=20b=20c)=0A=20(setcdr=20x1=20= (cons=20'd=20(cdr=20x1)))=0A=20=20=20=20=20=20@result{}=20(d=20b=20c)=0A= @@=20-1130,7=20+1130,7=20@@=20Rearrangement=0A=20=0A=20@example=0A=20= @group=0A-(setq=20x=20'(1=202=203))=0A+(setq=20x=20(list=201=202=203))=0A= =20=20=20=20=20=20@result{}=20(1=202=203)=0A=20@end=20group=0A=20@group=0A= @@=20-1150,7=20+1150,7=20@@=20Rearrangement=0A=20=0A=20@example=0A=20= @group=0A-(setq=20x=20'(1=202=203))=0A+(setq=20x=20(list=201=202=203))=0A= =20=20=20=20=20=20@result{}=20(1=202=203)=0A=20@end=20group=0A=20@group=0A= @@=20-1163,41=20+1163,7=20@@=20Rearrangement=0A=20@end=20group=0A=20@end=20= example=0A=20=0A-However,=20the=20other=20arguments=20(all=20but=20the=20= last)=20must=20be=20lists.=0A-=0A-A=20common=20pitfall=20is=20to=20use=20= a=20quoted=20constant=20list=20as=20a=20non-last=0A-argument=20to=20= @code{nconc}.=20=20If=20you=20do=20this,=20your=20program=20will=20= change=0A-each=20time=20you=20run=20it!=20=20Here=20is=20what=20happens:=0A= -=0A-@smallexample=0A-@group=0A-(defun=20add-foo=20(x)=20=20=20=20=20=20=20= =20=20=20=20=20;=20@r{We=20want=20this=20function=20to=20add}=0A-=20=20= (nconc=20'(foo)=20x))=20=20=20=20=20=20=20=20=20=20=20;=20=20=20= @r{@code{foo}=20to=20the=20front=20of=20its=20arg.}=0A-@end=20group=0A-=0A= -@group=0A-(symbol-function=20'add-foo)=0A-=20=20=20=20=20@result{}=20= (lambda=20(x)=20(nconc=20'(foo)=20x))=0A-@end=20group=0A-=0A-@group=0A= -(setq=20xx=20(add-foo=20'(1=202)))=20=20=20=20;=20@r{It=20seems=20to=20= work.}=0A-=20=20=20=20=20@result{}=20(foo=201=202)=0A-@end=20group=0A= -@group=0A-(setq=20xy=20(add-foo=20'(3=204)))=20=20=20=20;=20@r{What=20= happened?}=0A-=20=20=20=20=20@result{}=20(foo=201=202=203=204)=0A-@end=20= group=0A-@group=0A-(eq=20xx=20xy)=0A-=20=20=20=20=20@result{}=20t=0A= -@end=20group=0A-=0A-@group=0A-(symbol-function=20'add-foo)=0A-=20=20=20=20= =20@result{}=20(lambda=20(x)=20(nconc=20'(foo=201=202=203=204)=20x))=0A= -@end=20group=0A-@end=20smallexample=0A+However,=20the=20other=20= arguments=20(all=20but=20the=20last)=20must=20be=20non-constant=20lists.=0A= =20@end=20defun=0A=20=0A=20@node=20Sets=20And=20Lists=0A@@=20-1260,7=20= +1226,7=20@@=20Sets=20And=20Lists=0A=20=0A=20@example=0A=20@group=0A= -(delq=20'a=20'(a=20b=20c))=20@equiv{}=20(cdr=20'(a=20b=20c))=0A+(delq=20= 'a=20(list=20'a=20'b=20'c))=20@equiv{}=20(cdr=20(list=20'a=20'b=20'c))=0A= =20@end=20group=0A=20@end=20example=0A=20=0A@@=20-1270,7=20+1236,7=20@@=20= Sets=20And=20Lists=0A=20=0A=20@example=0A=20@group=0A-(setq=20= sample-list=20'(a=20b=20c=20(4)))=0A+(setq=20sample-list=20(list=20'a=20= 'b=20'c=20'(4)))=0A=20=20=20=20=20=20@result{}=20(a=20b=20c=20(4))=0A=20= @end=20group=0A=20@group=0A@@=20-1407,7=20+1373,7=20@@=20Sets=20And=20= Lists=0A=20=0A=20@example=0A=20@group=0A-(setq=20l=20'((2)=20(1)=20(2)))=0A= +(setq=20l=20(list=20'(2)=20'(1)=20'(2)))=0A=20(delete=20'(2)=20l)=0A=20=20= =20=20=20=20@result{}=20((1))=0A=20l=0A@@=20-1416,7=20+1382,7=20@@=20= Sets=20And=20Lists=0A=20;;=20@r{write=20@code{(setq=20l=20(delete=20'(2)=20= l))}.}=0A=20@end=20group=0A=20@group=0A-(setq=20l=20'((2)=20(1)=20(2)))=0A= +(setq=20l=20(list=20'(2)=20'(1)=20'(2)))=0A=20(delete=20'(1)=20l)=0A=20=20= =20=20=20=20@result{}=20((2)=20(2))=0A=20l=0A@@=20-1759,7=20+1725,7=20@@=20= Association=20Lists=0A=20than=20looking=20at=20the=20saved=20value=20of=20= @var{alist}.=0A=20=0A=20@example=0A-(setq=20alist=20'((foo=201)=20(bar=20= 2)=20(foo=203)=20(lose=204)))=0A+(setq=20alist=20(list=20'(foo=201)=20= '(bar=202)=20'(foo=203)=20'(lose=204)))=0A=20=20=20=20=20=20@result{}=20= ((foo=201)=20(bar=202)=20(foo=203)=20(lose=204))=0A=20(assq-delete-all=20= 'foo=20alist)=0A=20=20=20=20=20=20@result{}=20((bar=202)=20(lose=204))=0A= @@=20-1926,7=20+1892,7=20@@=20Plist=20Access=0A=20in=20the=20place=20= where=20you=20got=20@var{plist}.=20=20For=20example,=0A=20=0A=20@example=0A= -(setq=20my-plist=20'(bar=20t=20foo=204))=0A+(setq=20my-plist=20(list=20= 'bar=20t=20'foo=204))=0A=20=20=20=20=20=20@result{}=20(bar=20t=20foo=20= 4)=0A=20(setq=20my-plist=20(plist-put=20my-plist=20'foo=2069))=0A=20=20=20= =20=20=20@result{}=20(bar=20t=20foo=2069)=0Adiff=20--git=20= a/doc/lispref/sequences.texi=20b/doc/lispref/sequences.texi=0Aindex=20= 1a3a04f680..d35b4d05e3=20100644=0A---=20a/doc/lispref/sequences.texi=0A= +++=20b/doc/lispref/sequences.texi=0A@@=20-183,7=20+183,7=20@@=20= Sequence=20Functions=0A=20=0A=20@example=0A=20@group=0A-(setq=20bar=20= '(1=202))=0A+(setq=20bar=20(list=201=202))=0A=20=20=20=20=20=20@result{}=20= (1=202)=0A=20@end=20group=0A=20@group=0A@@=20-278,7=20+278,7=20@@=20= Sequence=20Functions=0A=20=0A=20@example=0A=20@group=0A-(setq=20x=20'(a=20= b=20c))=0A+(setq=20x=20(list=20'a=20'b=20'c))=0A=20=20=20=20=20=20= @result{}=20(a=20b=20c)=0A=20@end=20group=0A=20@group=0A@@=20-374,11=20= +374,11=20@@=20Sequence=20Functions=0A=20=0A=20@example=0A=20@group=0A= -(setq=20nums=20'(1=203=202=206=205=204=200))=0A+(setq=20nums=20(list=20= 1=203=202=206=205=204=200))=0A=20=20=20=20=20=20@result{}=20(1=203=202=20= 6=205=204=200)=0A=20@end=20group=0A=20@group=0A-(sort=20nums=20'<)=0A= +(sort=20nums=20#'<)=0A=20=20=20=20=20=20@result{}=20(0=201=202=203=204=20= 5=206)=0A=20@end=20group=0A=20@group=0A@@=20-396,7=20+396,7=20@@=20= Sequence=20Functions=0A=20the=20variable=20that=20held=20the=20original=20= list:=0A=20=0A=20@example=0A-(setq=20nums=20(sort=20nums=20'<))=0A+(setq=20= nums=20(sort=20nums=20#'<))=0A=20@end=20example=0A=20=0A=20For=20the=20= better=20understanding=20of=20what=20stable=20sort=20is,=20consider=20= the=20following=0A@@=20-1228,7=20+1228,7=20@@=20Array=20Functions=0A=20=0A= =20@example=0A=20@group=0A-(setq=20w=20[foo=20bar=20baz])=0A+(setq=20w=20= (vector=20'foo=20'bar=20'baz))=0A=20=20=20=20=20=20@result{}=20[foo=20= bar=20baz]=0A=20(aset=20w=200=20'fu)=0A=20=20=20=20=20=20@result{}=20fu=0A= @@=20-1237,12=20+1237,12=20@@=20Array=20Functions=0A=20@end=20group=0A=20= =0A=20@group=0A-(setq=20x=20"asdfasfd")=0A-=20=20=20=20=20@result{}=20= "asdfasfd"=0A+(setq=20x=20(string=20?a=20?b=20?c=20?d=20?e))=0A+=20=20=20= =20=20@result{}=20"abcde"=0A=20(aset=20x=203=20?Z)=0A=20=20=20=20=20=20= @result{}=2090=0A=20x=0A-=20=20=20=20=20@result{}=20"asdZasfd"=0A+=20=20=20= =20=20@result{}=20"abcZe"=0A=20@end=20group=0A=20@end=20example=0A=20=0A= @@=20-1257,7=20+1257,7=20@@=20Array=20Functions=0A=20=0A=20@example=0A=20= @group=0A-(setq=20a=20[a=20b=20c=20d=20e=20f=20g])=0A+(setq=20a=20= (vector=20'a=20'b=20'c=20'd=20'e=20'f=20'g))=0A=20=20=20=20=20=20= @result{}=20[a=20b=20c=20d=20e=20f=20g]=0A=20(fillarray=20a=200)=0A=20=20= =20=20=20=20@result{}=20[0=200=200=200=200=200=200]=0A@@=20-1265,10=20= +1265,10=20@@=20Array=20Functions=0A=20=20=20=20=20=20@result{}=20[0=200=20= 0=200=200=200=200]=0A=20@end=20group=0A=20@group=0A-(setq=20s=20"When=20= in=20the=20course")=0A-=20=20=20=20=20@result{}=20"When=20in=20the=20= course"=0A+(setq=20s=20(string=20?S=20?e=20?c=20?r=20?e=20?t))=0A+=20=20=20= =20=20@result{}=20"Secret"=0A=20(fillarray=20s=20?-)=0A-=20=20=20=20=20= @result{}=20"------------------"=0A+=20=20=20=20=20@result{}=20"------"=0A= =20@end=20group=0A=20@end=20example=0A=20=0Adiff=20--git=20= a/doc/lispref/strings.texi=20b/doc/lispref/strings.texi=0Aindex=20= 14cabc5d79..3d375409a9=20100644=0A---=20a/doc/lispref/strings.texi=0A+++=20= b/doc/lispref/strings.texi=0A@@=20-591,7=20+591,7=20@@=20Text=20= Comparison=0A=20=0A=20@example=0A=20@group=0A-(sort=20'("11"=20"12"=20"1=20= 1"=20"1=202"=20"1.1"=20"1.2")=20'string-collate-lessp)=0A+(sort=20(list=20= "11"=20"12"=20"1=201"=20"1=202"=20"1.1"=20"1.2")=20= 'string-collate-lessp)=0A=20=20=20=20=20=20@result{}=20("11"=20"1=201"=20= "1.1"=20"12"=20"1=202"=20"1.2")=0A=20@end=20group=0A=20@end=20example=0A= @@=20-608,7=20+608,7=20@@=20Text=20Comparison=0A=20=0A=20@example=0A=20= @group=0A-(sort=20'("11"=20"12"=20"1=201"=20"1=202"=20"1.1"=20"1.2")=0A= +(sort=20(list=20"11"=20"12"=20"1=201"=20"1=202"=20"1.1"=20"1.2")=0A=20=20= =20=20=20=20=20(lambda=20(s1=20s2)=20(string-collate-lessp=20s1=20s2=20= "POSIX")))=0A=20=20=20=20=20=20@result{}=20("1=201"=20"1=202"=20"1.1"=20= "1.2"=20"11"=20"12")=0A=20@end=20group=0A--=20=0A2.21.1=20(Apple=20= Git-122.3)=0A=0A= --Apple-Mail=_5781C227-1A23-46FD-9E9D-ED3BE42938E6--