From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.devel Subject: Re: Upcoming loss of usability of Emacs source files and Emacs. Date: Sat, 27 Jun 2015 08:20:28 -0400 Message-ID: References: <5581C29E.1030101@yandex.ru> <87r3p9fxm2.fsf@uwakimon.sk.tsukuba.ac.jp> <87k2v0fiji.fsf@uwakimon.sk.tsukuba.ac.jp> <20150619090225.GA2743@acm.fritz.box> <87fv5kfrfa.fsf@uwakimon.sk.tsukuba.ac.jp> <83twtzhi9g.fsf@gnu.org> <877fqvfvby.fsf@uwakimon.sk.tsukuba.ac.jp> <83fv5jh8ls.fsf@gnu.org> <874mlzf71d.fsf@uwakimon.sk.tsukuba.ac.jp> <558945C2.2010203@yandex.ru> <5589E2DB.1060207@yandex.ru> <558AD06F.6080200@yandex.ru> Reply-To: rms@gnu.org NNTP-Posting-Host: plane.gmane.org Content-Type: text/plain; charset=Utf-8 X-Trace: ger.gmane.org 1435407666 21545 80.91.229.3 (27 Jun 2015 12:21:06 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 27 Jun 2015 12:21:06 +0000 (UTC) Cc: eggert@cs.ucla.edu, emacs-devel@gnu.org, monnier@IRO.UMontreal.CA, dgutov@yandex.ru, acm@muc.de, stephen@xemacs.org, eliz@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jun 27 14:20:52 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Z8p6K-0005YG-1P for ged-emacs-devel@m.gmane.org; Sat, 27 Jun 2015 14:20:52 +0200 Original-Received: from localhost ([::1]:35425 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8p6J-0005nN-AA for ged-emacs-devel@m.gmane.org; Sat, 27 Jun 2015 08:20:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35663) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8p62-0005n6-73 for emacs-devel@gnu.org; Sat, 27 Jun 2015 08:20:35 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z8p61-0006On-4t for emacs-devel@gnu.org; Sat, 27 Jun 2015 08:20:34 -0400 Original-Received: from fencepost.gnu.org ([208.118.235.10]:46728) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z8p5x-0006LF-1z; Sat, 27 Jun 2015 08:20:29 -0400 Original-Received: from rms by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1Z8p5w-0001Oh-2x; Sat, 27 Jun 2015 08:20:28 -0400 In-reply-to: (message from Richard Stallman on Fri, 26 Jun 2015 09:57:58 -0400) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.10 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:187590 Archived-At: [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] Here's a slightly revised doc string proposal for macroexp-let2. It is a real pain for me to install anything due to my difficulties with git. Can someone please install this doc string for me? Evaluate BODY with SYM bound to an expression for EXP's value. The intended usage is that BODY generates an expression that will refer to EXP's value multiple times, but will evaluate EXP only once. As BODY generates that expression, it should use SYM to stand for the value of EXP. If EXP is a simple, safe expression, then SYM's value is EXP itself. Otherwise, SYM's value is a symbol which holds the value produced by evaluating EXP. The return value incorporates the value of BODY, plus additional code to evaluate EXP once and save the result so SYM can refer to it. If BODY consists of multiple forms, they are all evaluated but only the last one's value matters. TEST is a predicate to determine whether EXP qualifies as simple and safe; if TEST is nil, only constant expressions qualify. Example: (macroexp-let2 nil foo EXP `(* ,foo ,foo)) generates an expression that evaluates EXP once, then returns the square of that value. You could do this with (let ((foovar EXP)) (* foovar foovar)) but using `macroexp-let2' produces more efficient code in cases where EXP is a constant. -- Dr Richard Stallman President, Free Software Foundation (gnu.org, fsf.org) Internet Hall-of-Famer (internethalloffame.org) Skype: No way! See stallman.org/skype.html.