Ich möchte in der Lage sein, s'Graph
und c'Graph
zu verwenden, um auf System'Graph
und Combinatorica'Graph
(und andere Funktionen, die sich mit Combinatorica überschneiden) zu verweisen. Gibt es eine Möglichkeit, dies zu tun?
Nach Simons Idee scheint Folgendes zu funktionieren
{Set @@ {ToExpression["c" <> Last[StringSplit[#, "`"]]],
ToExpression[#]}} & /@ Names["Combinatorica`*"];
{Set @@ {ToExpression["s" <> Last[StringSplit[#, "`"]]],
ToExpression[#]}} & /@ Names["System`*"];
Jetzt geben cCompleteGraph[5]
und sCompleteGraph[5]
jeweils Combinatorica
- und System
-Graphen zurück
Aktualisierung 8. Januar Für zukünftige Referenz, dies ist die Methode, die ich verwendet habe, um GraphUtilities
, Combinatorica
und die integrierte Graphenfunktionalität zusammen zu verwenden. Konflikte werden gelöst, indem alle Combinatorica-Funktionen wie Graph
auf cGraph
umgemappt werden und $Post
wird geändert, um GraphUtilities und Combinatorica von ContextPath bei jeder Auswertung zu entfernen, da GraphUtilities'ToCombinatoricaGraph
bei jedem Aufruf Combinatorica
zu $ContextPath
hinzufügt.
Zusammenfassend führen Sie den unten stehenden Code zu Beginn jeder Sitzung aus. Combinatorica-Funktion ist jetzt cfunc
, GraphUtilities-Funktion ist GraphUtilities'func
und integrierte Funktion ist einfach func
Needs["Combinatorica`"];
combNames = Names["Combinatorica`*"];
{Set @@ {ToExpression["c" <> Last[StringSplit[#, "`"]]],
ToExpression[#]}} & /@ Names["Combinatorica`*"];
Needs["GraphUtilities`"];
$ContextPath = DeleteCases[$ContextPath, "Combinatorica`"];
$Post = ($ContextPath =
DeleteCases[$ContextPath,
"Combinatorica`" | "GraphUtilities`"]; #) &;