Re: Re: What does & mean?
- To: mathgroup at smc.vnet.net
- Subject: [mg107266] Re: [mg107239] Re: What does & mean?
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Sun, 7 Feb 2010 06:13:31 -0500 (EST)
- References: <201002041126.GAA29847@smc.vnet.net> <hkgks4$6p9$1@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
I think things like Sin@#& are functions (more or less), whereas things
like f in
f[x_Integer]:=x^2
f[x_Real]:=x
are pattern-matching rule sets.
Neither way of defining things gives mathematical functions, in general,
since both can carry the same input to different outputs on subsequent
calls.
That is, f in
i=0;
f = (i++;i #)&
is not a function mathematically, and neither is
f[x_]:={AbsoluteTime[],x^2}
Hence, to my mind, trying to label one of the two forms a "true function"
and the other one "not a true function" is fruitless.
Bobby
On Sat, 06 Feb 2010 02:25:21 -0600, Richard Fateman
<fateman at cs.berkeley.edu> wrote:
> Leonid Shifrin wrote:
>> Richard,
>>
>>
>> Leonid's confusion relates to the pseudo-definition of a
>> "function" by pattern matching using
>>
>> fn[arg_]:= .......
>>
>> and the definition of a true function by
>>
>> fn= Function[{arg}], ......] or the brief but obscure ...#..&
>> notation...
>> fn = ....#.... &
>>
>> There is a widely held but technically bogus equivalence in the
>> minds
>> of Mathematica users, so Leonid's not alone..
>>
>> In particular, there is no pattern matching going on in the fn=
>> ... case, and the SetAttribute[fn, HoldAll] has no effect
>> whatsoever.
>>
>>
>> Can it be that you are not aware of the syntax of pure functions in
>> Mathematica which allows to set Hold-attributes (Function[vars,body,
>> HoldAll] for instance)? But more to the point.
> In fact, I was unaware of this feature, which I suspect was added to the
> language sometime after version 2 or 3. I was also unaware
> of the possibility of using ## for SlotSequence.
>
> This does not change the fact that SetAttribute[fn,HoldAll] has no
> effect on fn.
>
> I was unaware of your book (available online free! Thanks!) which looks
> rather nice. But there is
> generally a trade-off between being "friendly" and being "accurate".
> Thus using the term "function"
> is tricky. You can use a bunch of rules to define what is conceptually
> a mathematical function ...
> a pure mapping from input to output.. or you can talk about a
> "programming language function" which
> is (loosely speaking) any procedure, perhaps with side effect, that
> returns a value..
> or you can talk about a Mathematica Function, or something (....)&,
> which is a syntactic/ evaluation
> convention that by-passes pattern matching.
>
> Much of the discussion (not really in response to the original posting
> -- he just wanted to know how to
> get help on the "&" symbol, I think) .. has concentrated on the
> evaluation semantics in Mathematica,
> which gets in the way of many programmers. How many times do you
> evaluate a symbol?
> If you type x=x+1, you see it is about 255 times. This causes problems
> that eventually get solved
> by trying to block evaluation, sometimes, and then in some controlled
> way, Releasing it.
> Using Functions is a way to help do this, though it can be seen more
> cleanly in "functional programming"
> languages. I do not know of any (non-Mathematica) functional language
> with this
> "evaluate forever"
> semantics, though variants of it are common in rule-based transformation
> languages.
>
>
>> If you'd care to look at the relevant sections of my book you'd see
>> that I clearly state that pure and pattern-defined functions are very
>> different and used for different purposes (In fact, I had a couple of
>> examples similar to yours to illustrate this).
> I looked and yes you do.
>
> ... snip....
>
>> fn1 =
>> Function[{arg},
>> Switch[Head[Unevaluated[arg]], Print, "You want to print", Times,
>> "You want to multiply", _, "I have no idea what you want to do"],
>> HoldAll];
>>
> ....
>
>> To my mind, this explanation should have left no room for further
>> ambiguities,
> .. much better example...
>
> And thanks for mentioning your book, which I had not seen before. It
> seems to have good insights. (I admit to not
> reading its predecessors except the one by Maeder).
>
> RJF
>
>>
>
--
DrMajorBob at yahoo.com
- References:
- Re: What does & mean?
- From: Bill Rowe <readnews@sbcglobal.net>
- Re: What does & mean?