From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Barry Margolin Newsgroups: gmane.emacs.help Subject: Re: What does "lacks a prefix" mean? Date: Fri, 10 Jul 2015 14:27:40 -0400 Organization: A noiseless patient Spider Message-ID: References: <1e0ad02f-ca3e-495c-bb85-61f77090d31d@googlegroups.com> <87bnfmqzn2.fsf@kuiper.lan.informatimago.com> <87io9ui67a.fsf@nl106-137-147.student.uu.se> <871tghj720.fsf@nl106-137-147.student.uu.se> NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1436553022 7743 80.91.229.3 (10 Jul 2015 18:30:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 10 Jul 2015 18:30:22 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Fri Jul 10 20:30:21 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 1ZDd41-0004So-C7 for geh-help-gnu-emacs@m.gmane.org; Fri, 10 Jul 2015 20:30:21 +0200 Original-Received: from localhost ([::1]:45768 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZDd40-0007Lg-K5 for geh-help-gnu-emacs@m.gmane.org; Fri, 10 Jul 2015 14:30:20 -0400 Original-Path: usenet.stanford.edu!news.kjsl.com!feeder.erje.net!1.eu.feeder.erje.net!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!barmar.motzarella.org!.POSTED!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 39 Injection-Info: barmar.motzarella.org; posting-host="2be9e9f5dd9af768b8861af71b85fc28"; logging-data="6578"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19JqCphFH6zzXUgy6J7y1aN" User-Agent: MT-NewsWatcher/3.5.3b3 (Intel Mac OS X) Cancel-Lock: sha1:jvAT1BpSHpVmjDmgx6RpdY9pvQE= Original-Xref: usenet.stanford.edu gnu.emacs.help:213299 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:105586 Archived-At: In article , Stefan Monnier wrote: > >> let* says "I need variables which depend on each > >> other" and if they're really not, that look strange. > > If let behaved like let* it wouldn't look strange to you. Many other > functional languages dropped the "simultaneous let" and only kept the > equivalent of let* (or even letrec). It should be noted that the original LET macro in MacLisp was basically a rearranged LAMBDA: (let ((var1 val1) (var2 val2) ...) body...) ==> ((lambda (var1 var2 ...) body...) val1 val2 ...) When written this way, you can see where the order of evaluation of the values, and the parallel binding of the variables came from: arguments to a function have to be evaluated before the function is called (except in "lazy" languages). Most other languages also have function call syntax, and if they have anonymous functions they can express the same parallel binding. E.g. in Javascript you can write an "IIFE": (function(var1, var2, ...) {body...})(val1, val2, ...) This is actually a common idiom (and whenever I see it, I cringe that they somehow discovered the original Lisp syntax, yet didn't adopt the LET-style rewrite that makes it easier to comprehend). What they generally don't have is multiple ways to introduce local variables in the same scope of a function. -- Barry Margolin, barmar@alum.mit.edu Arlington, MA *** PLEASE post questions in newsgroups, not directly to me ***