У меня более или менее следующая настройка. В ~/path/to/my/packages у меня есть два пакета package1.m и package2.m. Каждый контур пакета представляет собой, например, следующее:
BeginPackage["package1`"]
[email protected]@Names["package1`*"];
[email protected]@Names["package1`*"];
Begin["`Private`"]
vecNorm[vec_?VectorQ]:=Module[{},Return[Sqrt[vec.vec]]];
End[]
[email protected]@Names["package1`*"];
EndPackage[]
Теперь моя проблема в том, что я хочу использовать vecNorm, определенный в package1.m в package2.m. Как я могу загрузить (безопасно) package1 из package2?
В настоящий момент я загружаю вручную оба пакета следующим образом:
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
из записной книжки, сохраненной в ~/path/to/my. Я хочу загрузить только вручную package2, который, в свою очередь, будет загружаться автоматически и безопасно package1. В общем, я хочу решение, которое изменяет как можно меньше путей и т.д. Математики. Какая должна быть лучшая практика для этого?
PS: В безопасности я подразумеваю, что в будущем, когда я определю package3, который будет использовать vecNorm, а также будет загружаться package1, и никаких конфликтов не произойдет.