次に挙げる関数でリストを操作します。また、これらの演算子は、次の節、第 “式の操作”で説明するように、式の操作にも使うことができます。コマンドとその説明は、リストと式を操作する関数にまとめられています。
A = Remove( A, 3 ); // リストAの3番目の項目を削除し、Aに結果を保存する
Remove From( A, 3 ); // その場でリストAの3番目の項目を削除する
Show( A ); // A = {2, 3, 2, 1, 2, 1};
onetwo = Insert( {1}, 2 ); // {1,2}
Insert Into( B, {1, 2}, 4 ); // 現在の4番目の項目の前に1,2を配置する
Show( B ); // B = {2, 3, 4, 1, 2, 1, 2, 1, 2, 1};
メモ: Insert Into関数で挿入する場所を省略した場合は、リストの最後尾に項目が挿入されます。
a = Shift( {1,2,3,4}, 1 ); // aにリスト{2,3,4,1}を保存する
Shift Into( a, -1 );
Show( a ); // a = {1, 2, 3, 4};
b = Reverse( a ); // bは{4,3,2,1}になる
Reverse Into( a ); // aは{4,3,2,1}になる
Show( b ); // b = {4, 3, 2, 1};
s = Sort List( {1,4,2,5, -7.2, Pi(), -11, cat, apple, cake} );
Show( s ); // s = {-11, -7.2, 1, 2, 4, 5, apple, cake, cat, Pi()};
c = {5, pie, 2, Pi(), -2};
Sort List Into( c );
Show( c ); // c = {-2, 2, 5, Pi(), pie};
インプレース関数は、リストまたは式を直接操作します。これらは、Remove FromやInsert Intoなどのように、関数名にFromまたはIntoが付いています。結果を戻さないため、結果を見るにはリストを表示させる必要があります。インプレース関数の第1引数は、L-valueでなければなりません。L-valueとは、値を代入できるグローバル変数などのエンティティです。
myList = {a, b, c, d};
Insert Into( myList, 2, 3 );
Show( myList );
a = {{1, 2, 3}, {"A", "B", "C"}};
Show( a );
Insert Into( a[1], 99, 1 );
Show( a );
Remove From( a[1], 1 );
Show( a );
インプレースでない関数の場合には、リストを直接記述するか、評価結果がリストとなる変数の名前を指定する必要があります。そうした関数は名前のなかにFromあるいはIntoを含みません。このタイプの演算子は、第1引数の元のリストや式には直接、変更を加えないで、変更した後のリストや式を戻します。
myNewList = Insert( {a, b, c, d}, 2, 3 );
oldList = {a, b, c, d};
newList = Insert( oldList, 2, 3 );
Substitute()とSubstitute Into()については、詳しく説明する必要があるでしょう。どちらの関数も、リスト(または式)でパターンに一致するものをすべて検索し、それを別の式に置換します。パターン(pattern)は名前でなければなりません。引数は適用される前に評価されるため、ほとんどの場合、Expr()関数を使って引数をクォートする必要があります。
Substitute( {a,b,c}, Expr( a ), 23); // {23,b,c}を戻す
Substitute( Expr( Sine( x ) ), Expr( x ), Expr( y ) ); // Sine(y)を戻す
a = {quick, brown, fox, jumped, over, lazy, dogs};
b = Substitute( a, Expr( dogs ), Expr( cat ) );
canine = Expr( dogs );
equine = Expr( horse );
c = Substitute( a, Name Expr( canine ), Name Expr( equine ) );
Show( a, b, c );
Substitute Intoは同じ操作をインプレースで実行します。
Substitute Into( a, Expr( dogs ), Expr( horse ) );
d = Substitute( a,
Name Expr( quick ), Name Expr( fast ),
Name Expr( brown ), Name Expr( black ),
Name Expr( fox ), Name Expr( wolf )
);
Substitute( Expr( a + a ), Expr( a ), Expr( aaa ) );