I have a Mathematica Notebook with a function that i would like to be able to access from another Notebook without having to have the first Notebook open. The functions calls other functions in the same notebook so all code in that nootebook would have to be compiled. Thanks for any help in advance!!
1 Answer
$\begingroup$
$\endgroup$
2
Note that there is another, newer, way to store definitions that may suit your purposes: to store then as local objects (or even as cloud objects), then retrieve them when needed. I'll illustrate with a very simple example and just for local objects.
In a notebook session, evaluate successively:
def = "func[x_]:=Exp[-x]Sin[x]"
LocalObject["file:///Users/myname/Desktop/funcdef"]
Put[def, %]
Then at any subsequent Mathematica session, in any notebook, evaluate...
Get[LocalObject["file:///Users/myname/Desktop/funcdef"]]
ToExpression[%]
...and see that it works:
func[\[Pi]/4]
E^(-\[Pi]/4)/Sqrt[2]
-
1$\begingroup$ Why not
Save/Get
from a file directly? Is there any advantage of using LocalObject? There has to be a good one if one is expect to write their definitions as strings and use ToExpression later. $\endgroup$– KubaCommented Jan 4, 2019 at 8:02 -
$\begingroup$ @Kuba: I'm just pointing out an alternative there; no claim of advantage, although there may be one -- especially if you use a
CloudObject
rather than aLocalObject
. $\endgroup$– murrayCommented Jan 5, 2019 at 15:45
Get
. You may find auto-generated packages useful: mathematica.stackexchange.com/questions/1369/… $\endgroup$BeginPackage
, etc.Get
ing a file will simply evaluate everything in that file. It's as if you had evaluated a notebook. $\endgroup$