Хотелось бы иметь возможность делать s'Graph
и c'Graph
, ссылаясь на System'Graph
и Combinatorica'Graph
(и другие функции, конфликтующие с Combinatorica), есть ли способ сделать это?Создание псевдонима для контекстных путей?
После идеи Симона, следующее, кажется, работает
{Set @@ {ToExpression["c" <> Last[StringSplit[#, "`"]]],
ToExpression[#]}} & /@ Names["Combinatorica`*"];
{Set @@ {ToExpression["s" <> Last[StringSplit[#, "`"]]],
ToExpression[#]}} & /@ Names["System`*"];
Теперь cCompleteGraph[5]
и sCompleteGraph[5]
возвращение Combinatorica
и System
графы соответственно
Update Jan 8 Для дальнейшего использования, это метод, который я закончился используя GraphUtilities
, Combinatorica
и встроенные функции графика вместе. Он разрешает конфликт путем переназначения всех функций combinatorica, таких как Graph
, до cGraph
и изменений $Post
для удаления GraphUtilities и Combinatorica из ContextPath при каждой оценке, необходимо, потому что GraphUtilities'ToCombinatoricaGraph
добавляет Combinatorica
в $ContextPath
при каждом вызове.
Подводя итог, выполните приведенный ниже код в начале каждого сеанса. Combinatorica FUNC теперь cfunc
, GraphUtilities FUNC является GraphUtilities'func
, и встроенный в FUNC только 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`"]; #) &;
Сколько различных символов вам нужно? Можно ли просто сделать cGraph = Combinatorica`Graph (и сохранить Combinatorica в $ ContextPath)? – Janus 2010-12-06 05:19:03
Это, кстати, вещь v8? В моей системе v7 `Intersection @@ (Имена [# <>" \ `*"] &/@ {"Combinatorica", "System"}) `возвращает пустой список. – Janus 2010-12-06 05:26:40