This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Modularität und die Benennung von Dingen /

KontexteKonstruktion von Mathematica-Paketen

2.6.9 Kontexte und Pakete

Ein typisches in Mathematica geschriebenes Paket führt mehrere neue Symbole ein, die zur Nutzung außerhalb des Paketes bestimmt sind. Diesen Symbolen entsprechen beispielsweise neue Funktionen oder neu im Paket definierte Objekte.

Es ist allgemein üblich, daß alle in einem Paket eingeführten neuen Symbole in einen Kontext gesetzt werden, dessen Name mit dem des Paketnamens verwandt ist. Wenn Sie das Paket einlesen, fügt es den Kontext am Beginn Ihres Kontext-Suchpfads $ContextPath hinzu.

So liest man ein Paket zum Finden von Padé Approximationen ein.

In[1]:= <<Calculus`Pade`

Das Paket stellt seinen Kontext an den Anfang von $ContextPath.

In[2]:= $ContextPath

Out[2]=

Das Symbol Pade ist in dem Kontext, der durch das Paket angelegt wird.

In[3]:= Context[Pade]

Out[3]=

Sie können auf das Symbol mit seinem Kurznamen verweisen.

In[4]:= Pade[Exp[x], {x, 0, 2, 4}]

Out[4]=

Die vollständigen Namen der in einem Paket definierten Symbole sind oft recht lang. In den meisten Fällen brauchen Sie jedoch nur den Kurznamen zu benutzen. Denn nachdem Sie ein Paket eingelesen haben, wird sein Kontext zu $ContextPath hinzugefügt, so daß dieser Kontext automatisch durchsucht wird, wenn Sie den Kurznamen eintippen.

Erscheinen jedoch zwei Symbole mit demselben Kurznamen in zwei verschiedenen Paketen, so kommt es zu Komplikationen. In diesem Fall warnt Sie Mathematica, sobald Sie das zweite Paket einlesen wollen. Es wird Ihnen mitteilen, welche Symbole durch die neu eingeführten Symbole überdeckt werden.

Das Symbol Pade im Kontext Calculus`Pade` wird durch das Symbol mit dem gleichen Kurznamen im neuen Paket überdeckt.

In[5]:= <<NewPade`

Das überdeckte Symbol erhalten Sie durch Angabe des vollständigen Namens.

In[6]:= Calculus`Pade`Pade[Exp[x], {x, 0, 2, 4}]

Out[6]=

Namenskonflikte können nicht nur zwischen Symbolen in unterschiedlichen Paketen entstehen, sondern auch zwischen Symbolen in Paketen und Symbolen, die Sie direkt im Verlauf einer Mathematica-Session einführen. Wenn Sie in Ihrem aktuellen Kontext ein Symbol definieren, so wird dieses Symbol jedes andere Symbol mit demselben Kurznamen in von Ihnen bereits eingelesenen Paketen überdecken. Der Grund dafür: Mathematica sucht immer erst im aktuellen Kontext nach Symbolen, bevor es Kontexte aus dem Kontext-Suchpfad durchsucht.

Dies definiert eine Funktion Div im aktuellen Kontext.

In[7]:= Div[f_] = 1/f

Out[7]=

Jede andere Funktion mit dem Kurznamen Div wird von der Funktion im aktuellen Kontext überdeckt werden.

In[8]:= <<Calculus`VectorAnalysis`

Dies erstellt das Koordinatensystem für Vektoranalysis.

In[9]:= SetCoordinates[Cartesian[x, y, z]]

Out[9]=

Hier wird Div aus dem aktuellen Kontext vollständig entfernt.

In[10]:= Clear[Div]; Remove[Div]

Jetzt wird das Div aus dem Paket benutzt.

In[11]:= Div[{x, y^2, x}]

Out[11]=

Wenn Sie in eine Situation kommen, in der unerwünschte Symbole die von Ihnen gewollten verdecken, so ist es gewöhnlich am besten, sich der unerwünschten Symbole mit Remove[s] zu entledigen. Eine mitunter passende Alternative dazu ist, die Einträge in $ContextPath so umzuordnen und den Wert von $Context so festzulegen, daß jene Kontexte zuerst durchsucht werden, die die von Ihnen gewünschten Symbole enthalten.

Eine Liste der Pakete erhalten

KontexteKonstruktion von Mathematica-Paketen