From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Pascal J. Bourguignon" Newsgroups: gmane.emacs.help Subject: Re: execute defun on reception of signal Date: Tue, 14 Jul 2015 04:41:40 +0200 Organization: Informatimago Message-ID: <87bnffo3yz.fsf@kuiper.lan.informatimago.com> References: <871tgedtkv.fsf@nl106-137-147.student.uu.se> <86r3odvfg3.fsf@gmail.com> <871tgd9uwi.fsf@nl106-137-147.student.uu.se> <7d1d1e2c-1b1d-490a-a20e-1a06c84e2c87@googlegroups.com> <996d35f0-133b-4760-ac26-cff54f402008@googlegroups.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1436841926 19867 80.91.229.3 (14 Jul 2015 02:45:26 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 14 Jul 2015 02:45:26 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Jul 14 04:45:20 2015 Return-path: Envelope-to: geh-help-gnu-emacs@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 1ZEqDe-0000kk-Rd for geh-help-gnu-emacs@m.gmane.org; Tue, 14 Jul 2015 04:45:18 +0200 Original-Received: from localhost ([::1]:57504 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZEqDd-0000zh-77 for geh-help-gnu-emacs@m.gmane.org; Mon, 13 Jul 2015 22:45:17 -0400 Original-Path: usenet.stanford.edu!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 42 Original-X-Trace: individual.net 4yyBqkaT1orgVFcjJTdN5Aml5YgeVLheg5bS/UnE4yLU9DRX6z Cancel-Lock: sha1:ZGIxZTQ5N2I4N2JjMzkzNWI5ZjIxOWVjYzMxNjFiMzJlMzMzZDdiMg== sha1:P654mGKo4tHuIRAPWpLhIfbDXxA= Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9 033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR mV+hO/VvFAAAAABJRU5ErkJggg== X-Accept-Language: fr, es, en User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Original-Xref: usenet.stanford.edu gnu.emacs.help:213424 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:105710 Archived-At: Emanuel Berg writes: > Rusi writes: > >> However on a docs-improving note here's this little >> titbit: [On other thread] There was this claim >> "letrec is nice" or some such. Since I know letrec >> from scheme etc but never seen in elisp I was >> curious. I find: describe-function tells nothing >> about the recursion the elisp info pages (index) >> seems to not have it at all > > There is no mention of "letrec" in > > /usr/share/info/emacs-24/elisp.info > > I don't know the policy. Are *all* functions, macros, > etc. supposed to be in the Elisp manual? letrec is not emacs lisp, it's scheme. In Common Lisp, one would use labels, so in emacs lisp you can write: (require 'cl) (defun fact (n) (labels ((f (n f) (if (plusp n) (f (- n 1) (* n f)) f))) (f n 1))) provides a nice tail-recursive factorial implementation. (fact 10) --> 3628800 (fact 41) --> 1716706262231547904 -- __Pascal Bourguignon__ http://www.informatimago.com/ “The factory of the future will have only two employees, a man and a dog. The man will be there to feed the dog. The dog will be there to keep the man from touching the equipment.” -- Carl Bass CEO Autodesk