Mathematicaには, MATLABのように特定のディレクトリにユーザー関数を置いて
おくと自動的に使える, という機能がないようです(これはRも同じ)。
少し試したところ, 下のようなファイルを書いて init.m でロードすると,
指定したディレクトリにある全てのファイルを読み込むことができるようです。
<< はMathematica的にはGetの略記らしい。
(* Library.ma *)
(* $Id: library.ma,v 1.2 2017/06/16 08:56:05 daichi Exp $ *)
dir = Directory[]
SetDirectory["~/share/math"]
Map[ Get,
Select[ FileNames[],
Function[x, !DirectoryQ[x] && (x != "library.ma")
&& (x != "init.m")]]]
SetDirectory[dir]
init.m は僕の場合(Mac)では ~/Library/Mathematica/Kernel/init.m にありました。
このディレクトリは長いので, 個人的に ~/share/math/ にシンボリックリンクを
張って使っています。
これで, ユーザー定義関数を書いて無事に機能を増やせるようになりました。
かなり基本的な話だと思うのですが, ほとんど書かれていないのが不思議です。
ところで, Python でいう zip の機能, すなわち ((a,b),(x,y)) というリストから
((a,x),(b,y)) というリストを作る機能がMathematicaでも欲しいと思って
書こうかと思っていたところ, 先に調べたら
In[1]:= x = {{"a","b"},{"x","y"}}
Out[1]= {{a, b}, {x, y}}
In[2]:= Transpose[x]
Out[2]= {{a, x}, {b, y}}
でできることを知って, まさに目から鱗でした。