MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

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




  • Prev by Date: Re: Texture in version 8, fine, but don't export...?
  • Next by Date: Re: Quit versus Clear["Global`*"]
  • Previous by thread: Re: Quit versus Clear["Global`*"]
  • Next by thread: Re: Quit versus Clear["Global`*"]