From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.bugs Subject: bug#11328: 24.1.50; Comment in `dired-copy-file-recursive' code Date: Wed, 25 Apr 2012 09:26:18 -0700 Message-ID: References: <0CC212AF2EA740A0B8FE5EEF91077A2D@us.oracle.com><9DC04CC6E710430F90675022247AF8C1@us.oracle.com><6D7414BA5657418E9D2AB4D0AA0E71A3@us.oracle.com> <87y5pk53ra.fsf@spindle.srvr.nix> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1335371242 23512 80.91.229.3 (25 Apr 2012 16:27:22 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 25 Apr 2012 16:27:22 +0000 (UTC) Cc: 11328@debbugs.gnu.org To: "'Nix'" Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Apr 25 18:27:21 2012 Return-path: Envelope-to: geb-bug-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 1SN53o-0003l1-8y for geb-bug-gnu-emacs@m.gmane.org; Wed, 25 Apr 2012 18:27:20 +0200 Original-Received: from localhost ([::1]:37654 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SN53n-00024P-JF for geb-bug-gnu-emacs@m.gmane.org; Wed, 25 Apr 2012 12:27:19 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:41913) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SN53f-00023n-Ly for bug-gnu-emacs@gnu.org; Wed, 25 Apr 2012 12:27:17 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SN53d-0000Uy-2P for bug-gnu-emacs@gnu.org; Wed, 25 Apr 2012 12:27:11 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:51902) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SN53c-0000Ut-Hm for bug-gnu-emacs@gnu.org; Wed, 25 Apr 2012 12:27:08 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SN54T-0004ch-Li for bug-gnu-emacs@gnu.org; Wed, 25 Apr 2012 12:28:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Drew Adams" Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 25 Apr 2012 16:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11328 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 11328-submit@debbugs.gnu.org id=B11328.133537124417725 (code B ref 11328); Wed, 25 Apr 2012 16:28:01 +0000 Original-Received: (at 11328) by debbugs.gnu.org; 25 Apr 2012 16:27:24 +0000 Original-Received: from localhost ([127.0.0.1]:52936 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SN53s-0004bp-13 for submit@debbugs.gnu.org; Wed, 25 Apr 2012 12:27:24 -0400 Original-Received: from rcsinet15.oracle.com ([148.87.113.117]:34437) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SN53o-0004bd-RX for 11328@debbugs.gnu.org; Wed, 25 Apr 2012 12:27:22 -0400 Original-Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by rcsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q3PGQK1s012503 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 25 Apr 2012 16:26:21 GMT Original-Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q3PGQJ9Z017521 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 25 Apr 2012 16:26:20 GMT Original-Received: from abhmt120.oracle.com (abhmt120.oracle.com [141.146.116.72]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q3PGQJap020297; Wed, 25 Apr 2012 11:26:19 -0500 Original-Received: from dradamslap1 (/130.35.178.194) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 25 Apr 2012 09:26:18 -0700 X-Mailer: Microsoft Office Outlook 11 In-Reply-To: <87y5pk53ra.fsf@spindle.srvr.nix> Thread-Index: Ac0i6P8GUna7zO8nRSOk5LW8aUB4LgACNxWA X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.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.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:59484 Archived-At: > Fluid variables are a Scheme thing (more, generally, a > functional-programming thing). "Dynamically-scoped free > variable" would be a reasonable thing to replace it with. Bof! Googling just a bit suggests that a fluid variable is more or less a dynamically scoped variable. That does not at all make it a _free_ variable. The variable occurrences noted in this code were free - no matter how scoped. Free in lambda calculi, free if dynamically scoped, free if lexically scoped. Free variables. And that is presumably why the comments were inserted: to point out to readers that the occurrences are not bound locally. > finding out what a fluid is once you see that is a matter of > ten seconds looking in, say, the Guile manual. No, it is not a matter of ten seconds. And the term "fluid variable" does not even appear in the Guile manual. The closest the manual comes, AFAICT, is this: "Fluids can also be used to simulate the desirable effects of dynamically scoped variables." NB: "also" and "simulate" and only certain "effects of". IOW, the Guile manual does not even say that a fluid is a dynamically scoped variable, let alone a d-s _free_ variable. A fluid is said to be an object that can store one value per dynamic state. The claim wrt dynamic scoping is only that, among its various uses, a fluid can simulate some of the effects of a dynamically scoped variable. (The Guile manual, BTW, distinguishes fluid vars from "parameters", which it says are "like dynamically bound variables in other Lisp dialects". The distinction being apparently that parameters are per-thread.) Anyway, this is not Guile - or Scheme of any sort. In the same vein, here is a quote from Emacs Wiki, presumably written by a Schemite. It indicates a similar parochialism: "Scheme was the first language to introduce lexical binding. ... Variables subject to dynamic binding are usually referred to as `fluid variables' or `parameters' on these systems." (http://www.emacswiki.org/emacs/DynamicBindingVsLexicalBinding#Scheme) In the Beginning there was The Scheme... First to introduce lexical binding, indeed! But even if dynamically bound variables are "usually" referred to as "fluid variables" among Scheme enthusiasts, that is no reason to suppose that Computer Science or programming practice in general refers to them that way. And anyway, the code comments I commented on are about _free_ variable occurrences. They do not simply point out variables that are dynamically scoped. FWIW, the `librep' manual says that "fluid variables" aka fluids are another "method of implementing dynamically scoped variables." The sole purpose of such an object, it claims, is "to provide a location from which dynamic bindings may be created." (And yet librep's claim to fame is that it has improved on Emacs Lisp in this way: It "was originally inspired by Emacs Lisp. However one of the main deficiencies of elisp--the reliance on dynamic scope--has been removed." Removed ... and then implemented, it seems, using fluids.) FWIW, here's a Joulist characterization of fluid variables, which claims that Scheme has _no_ fluid variables: "A fluid variable is a symbol and cell that is established as part of the current environment. When a fluid variable (symbol) is referenced the current nest of environments is searched for a fluid variable with the matching symbol. The first such match provides the cell that satisfies the reference. This really means that each continuation embodies a set of fluid bindings. Many uses of continuations, for which they were reified, are incompatible with fluid variables. One such use is time-slicing. Scheme has no fluid variables." http://www.cap-lore.com/Languages/Global.html The same article mentions global vars, static class vars, "fluid variables in Common Lisp", and dynamically scoped vars as being "related". I personally have not seen "fluid variable" used wrt Common Lisp, which AFAIK calls it a "special variable". In short, I do not see where, even in the limited world of Scheme or Guile, a free variable occurrence is a "fluid variable" or vice versa. No, I am no expert on SkemeSpeke. But I can usually recognize a free variable when I see one. Mea culpa: I googled for "fluid variable" before filing the bug, and it seemed that the term was essentially limited to fluid mechanics. So I guessed (wrongly) that its use here might have been a mistranslation from some other natural language to English. I did not guess that it was simply the _use_ of another language, unnatural, and not a translation at all. So let me translate my bug report: time to translate to English. These are _free_ variable occurrences.