Re: Types in Mathematica

• To: mathgroup at smc.vnet.net
• Subject: [mg62194] Re: Types in Mathematica
• From: John Doty <jpd at whispertel.LoseTheH.net>
• Date: Mon, 14 Nov 2005 00:38:39 -0500 (EST)
• References: <200511120833.DAA19252@smc.vnet.net> <43762529.7060603@math.umass.edu> <dl8s4g\$n41\$1@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Steven T. Hatton wrote:

> On Saturday 12 November 2005 12:23 pm, Murray Eisenberg wrote:
>
>>Every function you write can be made to type its variables.  E.g.,
>>
>>   f[x_?NumberQ] := x^2
>>
>>   g[lis_List] := Most[lis]
>>
>>   normalize[v_ /; VectorQ[v, NumberQ]] := v/Norm[v]
>>
>>use: the built-in NumberQ function to test a property of the input x,
>>and the pattern test for having a head of List, respectively.
>
>
> wanted a type Boolean for variables and boolean values.  It seems that in
> Mathematica, a variable, in and of itself, does not really have a type in the
> sense of c++.  That is, you don't say
>
> Integer a=1;
>
> You just say
>
> a=1;
>
> and that makes it an integer.

FORGET CC++. You will *never* understand Mathematica by analogy with C++.

Mathematica's more like sed than C++: it works by recognizing patterns
in input and replacing them.

a=1;

simply means whenever you see "a", replace it with "1". That's all. No type.

>
> You can reassign to that variable an change the type bound to it.  In that
> sense Mathematica seems more like Lisp.

Mathematica has, in general, no idea what a variable is. "a" is a
Symbol. It might be a variable, it might be something else. For specific
tthings like Integrate, you get to designate particular Symbols as
variables (using the meaning of the word "variable" in mathematics,
*not* computer science).

>  I guess I can do something like
>
>
> I'll admit, that really isn't something that has a C++ counterpart.

FORGET C++.

>
>
> One thing about your example of VectorQ is that it requires the members of the
> List to be Number types.  What happens if they are functions which will
> evaluate to numbers?

You get to specify this behavior at whatever level of detail you wish.
Or not: much Mathematica code is evaluated only a handful of times. Get
the answer, the notebook becomes documentation for how you got it.

>
>
>>Sections 2.3.4 and 2.3.5 of The Mathematica Book are two places to find
>>this subject discussed.
>
>
> This is not the discussion I had in mind.  Somewhere there is an example of
> creating an expression with a head Vector, and using the head of the
> expression as a "type".
>
>
>>installation: Whenever I've installed in Linux and selected to install
>>the documentation, the usual HelpBrowser becomes available, including
>>its search capability.
>
>
> I may be mistaken, but I believe 5.2 comes with an independent indexing
> facility which acts something like htdig.  I have the usual helpbrowser index
> functionality, but I don't believe that provides a full text search.

Stop trying to make Mathematica behave like tools you know. Use it on
its own terms: in its domain it's better than anything you know.

-jpd

```

• Prev by Date: Re: Bug in pattern parsing?
• Next by Date: MathTensor notational form
• Previous by thread: Re: Types in Mathematica
• Next by thread: Re: Types in Mathematica