リストの全分割を生成する
新関数のFoldPair とFoldPairListを使うと,出力関数と状態更新関数に同時にマッピングを行うことができる.
長さ5のリストを分割する.
In[1]:=

list = {a, b, c, d, e};
FoldPairListをTakeDropと一緒に使って次の長さに分割する.
In[2]:=

lengths = {2, 2, 1};
FoldPairList[TakeDrop, list, lengths]
Out[2]=

あらゆる方法で分割するために,5という数の可能なすべての分解を求める.
In[3]:=

lengthsAll = Flatten[Permutations /@ IntegerPartitions[5], 1]
Out[3]=

In[4]:=

FoldPairList[TakeDrop, list, #] & /@ lengthsAll // Column
Out[4]=
