Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

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.
> 
> 
> Looking at the builtin types is what got me thinking about this topic.  I 
> 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 
> 
> BooleanQ[b_]:= b==True||b==False||Head[b]==Boolean
> 
> 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".
> 
> 
>>I don't understand why you don't have access to search in your Linux
>>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