# user defined functions, how to save them for future use?

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.

-

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 http://stackoverflow.com/questions/4641512/how-to-install-new-packages-for-mathematica

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

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`.

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

-