16
$\begingroup$

I need certain user defined functions over and over. I was wondering how can I define and where and how to save them such that each time I start a notebook, these functions are available and need not to be defined again.

$\endgroup$

1 Answer 1

24
$\begingroup$

Best place is to make a package. But if you do not feel like it, you can put the definitions in the init.m file

using init.m

see http://reference.wolfram.com/mathematica/ref/file/init.m.html for more information on using init.m. From the above:

"Possible locations for init.m files include the following:"

 $BaseDirectory/Kernel kernel initialization code for all users $UserBaseDirectory/Kernel kernel initialization code for the currently logged-in user $BaseDirectory/FrontEnd front end initialization code for all users $UserBaseDirectory/FrontEnd front end initialization code for the currently logged-in user 

When using init.m you do not need to load anything, as init.m is read automatically if is is found when Mathematica starts.

Using a package

If you put the definitions in a package, say foo.m and then you can load your package, like this

 Get["c:\\mydata\\foo.m"] 

or if the package is in one of the standard locations in the Mathematica $Path you can write

 Needs["foo`"] 

whenever you need to use the functions.

To make a simple package, here is a note I wrote here it has more information.

See also this question here at how to install and use a package https://stackoverflow.com/questions/4641512/how-to-install-new-packages-for-mathematica

also WRI page on packages http://reference.wolfram.com/mathematica/tutorial/SettingUpMathematicaPackages.html

Autoloading packages

For advanced packages, you can make a package that will also load automatically when Mathematica starts. These has to go to a special location though, called AutoLoad.

This link below is very useful to tell one where to put everything in Mathematica and talks more about this autoloading

http://reference.wolfram.com/mathematica/tutorial/MathematicaFileOrganization.html

$\endgroup$
2
  • $\begingroup$ Unforunately the last two hyperlinks became orphans. $\endgroup$ Commented Feb 6, 2016 at 7:56
  • $\begingroup$ The last hyperlink may have been superseded by Wolfram System File Organization. The penultimate hyperlink may have been superseded by Setting Up Wolfram Language Packages $\endgroup$ Commented Jan 19, 2022 at 23:29

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.