From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.devel Subject: Re: Why is FUNC in cl-callf not allowed to be an expression? Date: Wed, 22 May 2019 03:00:11 +0200 Message-ID: <87ftp7palg.fsf@web.de> References: <874l631ek1.fsf@web.de> <87pnoqtuhm.fsf@web.de> <87r2961gox.fsf@web.de> <87mujohasa.fsf@web.de> <87a7fn3c6c.fsf@web.de> <875zqabh3t.fsf@web.de> <87zhnma11c.fsf@web.de> <871s0y3weo.fsf@web.de> <87tvdshew9.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="25551"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed May 22 03:19:24 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hTFua-0006UR-Dk for ged-emacs-devel@m.gmane.org; Wed, 22 May 2019 03:19:20 +0200 Original-Received: from localhost ([127.0.0.1]:33851 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTFuZ-0008F3-Dz for ged-emacs-devel@m.gmane.org; Tue, 21 May 2019 21:19:19 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:49250) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hTFsO-0005tc-Bf for emacs-devel@gnu.org; Tue, 21 May 2019 21:17:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hTFcL-00060B-A2 for emacs-devel@gnu.org; Tue, 21 May 2019 21:00:31 -0400 Original-Received: from mout.web.de ([212.227.15.3]:38209) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hTFcI-0005se-2m for emacs-devel@gnu.org; Tue, 21 May 2019 21:00:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1558486814; bh=B/wmOLCSVbZm7/76H1aGlYMjP6wN8eSAdIJ6eTA4OyQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=rUYuWkrQ07zWCD54cj4yBr8G1pE6GUBeJeiRo/MWp/gNXcs/gFwWpfPkUKjr7JBrH 5Gn4y9D+TL8HQBiaw0o2k2323ovTJZxv8UHBLKLRBeGnySs7YvLh5cfU8gie7gE+XP kqtfu6bZsc8rUTKI4GKKCBG3QH6RjXCn0mTe7zRo= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Original-Received: from drachen.dragon ([188.110.143.34]) by smtp.web.de (mrweb001 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MEVU9-1hRKjv0EOn-00Fk2O; Wed, 22 May 2019 03:00:14 +0200 In-Reply-To: (Stefan Monnier's message of "Sat, 18 May 2019 10:09:41 -0400") X-Provags-ID: V03:K1:Gv0oQwntxcLTx9JbStl8jj7lhJr65av+t4mirKJYZ3x+FdI0B4v 9EMZ+nHnjZQp8bZMVELQZTemAxNqpOJ0bguz5SVYiCyaN64Dz0PbUS+5LO23RjQGGb1b/Qz Qi9etX1d8V+SZhexD0uS0EPAEjylIfLW85I0ZkjEc2/4u4ObCLQsIV3zHAsgJxMjueMT4pQ QBkslNAFqsBmIBxJblJhg== X-UI-Out-Filterresults: notjunk:1;V03:K0:E69jbq1UDTE=:usFu1zOrZNY9aAlJG7lPC5 uhAht3qpriRV1ucoGzUO8+HkMblgPXMhKEnTgs7HcXrX3sKx0yy21K9XJJySU33ohZxyag/mw W95iInY4TYpEv40Dsc9OrbtyzK1tKw6wZbxQYPuRc4ZJfYo5XKbLFAwYn+MPMOqOtRbWBRrnM ut632e5mwssydSKqxPOiL64lSY3sXHxkGq1HnorynRWkf4v/TArB3upFY5P2lWqq0z2O9aGiV B9So8L1rCOU5VhTGb906SI5CFi3SwbmSztvSEgELShgI+By1zghhiIFUP6YG9vW3CgY99H8or VYkxVPTxlBoPUPz16+7h/JxJ3feM8gC97SdWX7wc4lUqZGVRn4WuIr4vbE6u+lHW0SnfP5umP S1iv6siwjbHngTMBI+uZbrreEjkQzGXEBEHnnyOGFczrzE9Z7xkqwYgBaSTX3jEU0nfEPETgS c5zT9GxPLyOIevQsLtvTCXMnXFAegVyATrCCMrLKa9R0T5siIni4LRMGE2KuDVocfbWXL5EHW FzD60MMEV67icLDopBNVmPIRPuokhdhO2comH4a6cMA+U8VgvUxVPpSy2YbWlhGQYWO02vqh9 AwT4BGigZ7nEHT1d+KGTI91pgi69UD9yRMOFSF2eeVR4eABxMK57EFs/+gXRy9bDujn0nZZvj ifx3OGvkToxaAhQSg3wzKEs+seB6vzXBpHSFwqYy6pYMeQRpoCYzuZjDiyq5G013UIA6iCYAo hp13B39myQYZjaOBm9dLao3UO/wCro3ndxrOtWstJRlL+jvTcT8yqx3J7iewdhVrV8rbAtee X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.15.3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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" Xref: news.gmane.org gmane.emacs.devel:236876 Archived-At: Stefan Monnier writes: > Yeah, maybe a "place alias" is a generalization of symbol-macro. > > Actually, no: [...] I see Graham using symbol macros to abbreviate normal code in "On Lisp". That's enough evidence for me not to touch symbol-macrolet. > [...] symbol-macro can also expand to other macro-calls which are > supposed to be re-expanded at each use-site, AFAIK, so it can > macro-expand to something different every time the "variable" is > referenced, which is not the case of places, I think. With our current implementation of local macros, only the expansion (compile) time matters, so this not so simple to do: (let ((l '(0 1 2 3)) (i '(0 1 2 3)) (flag nil)) (cl-macrolet ((yyy () (if flag '(nth 2 l) '(nth 3 i)))) (cl-symbol-macrolet ((xxx (yyy))) (setf xxx 0) (list l i)))) |- void-variable: flag (defvar flag t) (defmacro zzz () (if flag '(nth 2 l) '(nth 3 i))) (let ((l '(0 1 2 3)) (i '(0 1 2 3)) (flag nil)) (cl-symbol-macrolet ((xxx (zzz))) (setf xxx 0) (list l i))) ==> ((0 1 2 3) (0 1 2 0)) ;; FLAG has been checked at expansion time I could move the check of FLAG into the expansion, but that's not what you meant, and since you made `if` forms place expressions, it would not even be a counterexample any more. Michael.