MathGroup Archive 2001

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

Search the Archive

Re: OOP in Mathematica

  • To: mathgroup at
  • Subject: [mg29032] Re: OOP in Mathematica
  • From: "Drago Ganic" <drago.ganic at>
  • Date: Fri, 25 May 2001 01:48:08 -0400 (EDT)
  • Organization: HThinet
  • References: <9e02ol$> <9e2bm5$> <CjLN6.9482$> <9eigq5$>
  • Sender: owner-wri-mathgroup at

Hi ,

There are  two things I am missing in Mathematica and I would like to hear other opinions:

First: Naming "functions" and "objects"

When using the ? HELP I would like sometimes to know what an object can "do" [the functions] and sometimes on what objects a certain function can operate [the objects]. So I would like a function browser and an object browser.

Here is an example: Using 


gives all the "functions" I can use with a Noteook object. Among them I can find a NotebookCreate function.

Now I am interested what other objects can be "created". Using 


I find another "function" LinkCreate. But using 


I find CreateDirectory ?!?. Mathematica is inconsistent in naming its symbols. This can make it hard to learn and/or remember.

Here is my question: Why do I have a function NotebookCreate and not a function Create which operates on Notebooks, Directory and so on.... Why is overloading not used in these cases?

Browsing through the Section 2.10 of the Mathematica book I find the need for the generic "functions":
    Print ,Open, Put, Get, Move, Find, Locate, Write, Apply, Delete, Read, Evaluate, Create, Animate, Save, Close, Execute, ...

overloaded to work with the "objects":

    Cell, Style, Notebook, Selection, FroneEndToken, FrontEnd

Second: No Data Type

Having a Date "type" is extremly important in business aplications in which I am personally involved [maybe I'm the only one here :-))].

Not having one, gives the user the opurtunity to add a "number" to a "day in month" resulting in a nonsense:

Out[28]= {2001, 5, 24, 20, 17, 33}

In[30]:= Date[] + {0, 0, 10, 0, 0, 0}
Out[30]= {2001, 5, 34, 20, 18, 10}

I now that I can use

In[33]:=ToDate@FromDate[Date[] + {0, 0, 10, 0, 0, 0}]
Out[33]={2001, 6, 3, 20, 19, 31}

but I am quite unhappy with this solution. Why Date[] returns a LIST and not something like




on which Plus could be overloaded ...

Of course I know that I can change Mathematica to fit my needs but I would like to now why WRI made such design decisions.

Sorry for the long post. Hope sombody will answer :-)

Greetings from Croatia,
Drago Ganic

"Jens-Peer Kuska" <kuska at> wrote in message news:9eigq5$51t at
> Hi,
> > With all respect, I think you might have said "in my opinion." 
> I have no other opinion than mine.
> > OOP is
> > revolutionizing software development, by (among other things) separating
> > implementation from interface, thus allowing modules to interact more easily
> > and with fewer problems.
> That's OOP -- wow! I thought it is good programming style, working
> in every higher programming language.
> > Mathematica's "Module[]" facility is a simple
> > embodiment of this idea, 
> What is with my beloved Block[] - is it also OOP  ?
> Next you will say that patterns are also OOP, and the 
> good old pure functions ? Is this object oriented ?
> Fine ! Now I know that LISP and Prolog are native
> object oriented languages !
> > by enclosing code blocks and isolating them from
> > their applications, making it possible to change the methods without
> > changing the outer appearance and uses.
> You change *functions* not methods! and this is functional programming.
> Since Mathematica does not know what a data type is, the data 
> types can't have methods.
> But you can have functions that evaluate special arguments.
> Regards
>   Jens

  • Prev by Date: Importing EPS
  • Next by Date: Faster rotate bitmap
  • Previous by thread: Re: OOP in Mathematica
  • Next by thread: Re: OOP in Mathematica