Re: Quit versus Clear["Global`*"]
- To: mathgroup at smc.vnet.net
- Subject: [mg121308] Re: Quit versus Clear["Global`*"]
- From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
- Date: Thu, 8 Sep 2011 05:27:47 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201109042206.SAA21533@smc.vnet.net> <j44k53$94d$1@smc.vnet.net>
It's most probably justified as being for the user's convenience. Personally I have always thought that referring to a symbol with delayed evaluation semantics and without any explicit parameters (a.k.a. a function with no arguments or options) as, for example, f[] is illogical, ugly, and inconsistent when it appears in Mathematica because one can just as well set OwnValues as DownValues, and doing the former more accurately expresses the intended meaning. Along this line of argument, Abort[] should indeed be Abort, especially since if actually called with any arguments Abort prints messages complaining about it. Obviously the only reason why there are such symbols is in a (probably misguided) effort to try to act more like other languages or environments: a similar argument, I suspect, explains Quit. Of course this doesn't excuse it, because Quit does in fact take a parameter, and mixing up the two unrelated concepts of functions vs. symbols with DownValues can only lead to confusion... but nothing's perfect. At least you can ignore Quit if you like and use Quit[] instead; not so, unfortunately, with the names and invocations of some of the Parallel` functions, which were comprehensively mangled when Maeder's Parallel Computing Toolkit became a part of Mathematica proper. On Wed, 07 Sep 2011 13:29:39 +0100, Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote: > Of course it is not a great mystery if you define it yourself. After > all, you can also define > > ContextPath := $ContextPath > > and you will have global variables not beginning with $, etc. The > question is why: does WRI appear to violate what seem to be the logical > foundations of Mathematica's language. > > Andrzej Kozlowski > > > On 7 Sep 2011, at 11:40, Oleksandr Rasputinov wrote: > >> Quit[Abort[]] doesn't quit; instead it gives $Aborted. (I dare say as > >> expected.) >> >> Quit vs. Quit[] performing the same operation isn't a great mystery: > one >> can define >> >> f := a >> >> and >> >> f[args___] := a >> >> and get the same result regardless of whether f is called as f or > f[...]. >> In general DownValues and OwnValues don't work like this, but > providing >> for such behaviour in a specific case is easy. >> >> On Tue, 06 Sep 2011 09:03:47 +0100, DrMajorBob <btreat1 at austin.rr.com> > >> wrote: >> >>> Quit appears to quit as soon as it is parsed, regardless of > arguments... >>> yet another poster found that, if it is the first line in a cell with >>> other statements, Mathematica doesn't quit until those other > statements >>> are done, hence wiping out their effect. >>> >>> Quit[e] the conundrum. >>> >>> Bobby >>> >>> On Mon, 05 Sep 2011 13:15:07 -0500, Andrzej Kozlowski > <akoz at mimuw.edu.pl> >>> wrote: >>> >>>> Well, I see it differently. All Mathematica functions have the form >>>> Head[arguments] where the number of arguments could be 0. Quit is >>>> therefore a Mathematica function, like Print[], Return[]. In fact, >>>> Quit[n] where n is an integer also works "passing the integer n as > an >>>> exit code to the operating system" whatever that means. On the other >>>> hand, expressions of the form Abracadabra are normally just symbols > and >>>> normally they do not perform any actions. In fact, do you know of > any >>>> other example (except Quit) when when evaluating a symbols actually > does >>>> more than return a value (that usually happens in the case of global >>>> constants, whose names begin with $, >>>> >>>> [1]:= $Version >>>> >>>> Out[1]= 8.0 for Mac OS X x86 (64-bit) (February 23, 2011) >>>> >>>> Note, by the way, that Abort[] works but Abort does not: >>>> >>>> In[3]:= Print[a];Abort[];Print[b] >>>> During evaluation of In[3]:= a >>>> Out[3]= $Aborted >>>> >>>> Print[a];Abort;Print[b] >>>> a >>>> b >>>> >>>> Andrzej Kozlowski
- References:
- Re: Quit versus Clear["Global`*"]
- From: Themis Matsoukas <tmatsoukas@me.com>
- Re: Quit versus Clear["Global`*"]