Accessing Top-level Commands after Rebinding Their Names
Some commands in Maple have similar names. For example, the top-level command name diff is similar to the package-level command name VectorCalculus:-diff.
When the short-form name of package-level command is defined using the with command, the short-form name is bound to the package-level command. This happens regardless of whether a top-level command with the same name, protected or not, exists. For example, after issuing with(VectorCalculus, diff), the command name diff refers to the package-level VectorCalculus:-diff command.
You can still directly access the top-level command after its name has been rebound if the package invoked is implemented as a module, but not if the package is implemented as a table.
How to determine if a package is implemented as a module or table
Packages Implemented as Modules
Packages Implemented as Tables
Use the type command to determine if a package is implemented as a module or as a table.
type(packagename, `module`);
type(packagename, table);
For example,
type(networks, '`module`');
false
type(VectorCalculus, '`module`');
true
Once you have determined how the package has been implemented, follow the instructions in one of the following sections.
To use a top-level command after its name has been rebound to a package-level command, use the colon-dash syntax (:-commandname).
The following example intentionally employs an error message to illustrate which command level is used.
diff( );
Error, invalid input: diff expects 2 or more arguments, but received 0
Note: The message refers to the top-level diff command.
Now invoke the VectorCalculus package.
with(VectorCalculus);
&x,`*`,`+`,`-`,`.`,<,>,<|>,About,AddCoordinates,ArcLength,BasisFormat,Binormal,ConvertVector,CrossProduct,Curl,Curvature,D,Del,DirectionalDiff,Divergence,DotProduct,Flux,GetCoordinateParameters,GetCoordinates,GetNames,GetPVDescription,GetRootPoint,GetSpace,Gradient,Hessian,IsPositionVector,IsRootedVector,IsVectorField,Jacobian,Laplacian,LineInt,MapToBasis,∇,Norm,Normalize,PathInt,PlotPositionVector,PlotVector,PositionVector,PrincipalNormal,RadiusOfCurvature,RootedVector,ScalarPotential,SetCoordinateParameters,SetCoordinates,SpaceCurve,SurfaceInt,TNBFrame,TangentLine,TangentPlane,TangentVector,Torsion,Vector,VectorField,VectorPotential,VectorSpace,Wronskian,diff,eval,evalVF,int,limit,series
The VectorCalculus package contains a diff command. For differences between the two commands, see diff and VectorCalculus:-diff.
Enter the diff(); command again.
diff();
Error, invalid input: VectorCalculus:-diff uses a 1st argument, f, which is missing
The message now indicates that the error is generated by the VectorCalculus package-level command and not the top-level diff command.
To use the top-level diff command, use the :- syntax.
:-diff();
Note: The message once again indicates that the error is generated by the top-level diff function.
To use a top-level command after its name has been rebound to a package-level command, you must first use the restart; command.
minimize();
Error, invalid input: minimize uses a 1st argument, exprFP (of type algebraic), which is missing
Note: The message refers to the top-level minimize command.
with(simplex);
basis,convexhull,cterm,define_zero,display,dual,feasible,maximize,minimize,pivot,pivoteqn,pivotvar,ratio,setup,standardize
The simplex package contains a minimize command.
Error, invalid input: minimize uses a 1st argument, obj, which is missing
Note: The message refers to the package-level simplex[minimize] command.
:-minimize();
Note: Packages implemented as tables overwrite any conflicting top-level commands when you invoke the package. You cannot access the top-level command by using the :- syntax.
To use the top-level minimize command, first invoke the restart command.
restart;
Note: The message once again refers to the top-level minimize command.
See Also
protect
Using Packages
with
Download Help Document