I have a bunch of user-defined functions that are frequently used in mathematica. I wonder if I can store them in separate files and mathematica will load them on start and trea
You can create a package in $UserBaseDirectory/Autoload. This will be loaded at Kernel initialization time.
Your package should have a Kernel/init.m file
MyPackage/Kernel/init.m
Reference documentation on Mathematica packages: http://reference.wolfram.com/mathematica/tutorial/SettingUpMathematicaPackages.html
DeclarePackage[]
is a lazy loading mechanism for symbols and their definitions. The associated package is loaded only when the symbol is used:
http://reference.wolfram.com/mathematica/ref/DeclarePackage.html