data.sparse
- Skew binary random-access lists ¶このモジュールは、Skew binary random-access list (以降は短くskew-listと表記します)を提供します。 skew-listは変更不可なデータ構造で、リストとベクタの中間のような 性質を持っています:要素数をnとするとき 最初の要素を取り出したり(car)、最初に要素を追加する(cons)のはO(1)、 最初以外の要素を返す(cdr)のはO(log n)、 そして整数インデックスにより任意の要素にアクセスするのもO(log n)です。
skew-listは常に「properなリスト」です。すなわち、それは
空のskew-list (skew-list-null
)か、
skew-listの前に要素を付け足したもの、です。
{data.skew-list
}
skew-listのクラスです。
<sequence>
を継承していて、シーケンスプロトコルを実装しています
(gauche.sequence
- シーケンスフレームワーク参照)。
{data.skew-list
}
objがskew-listなら#t
を、そうでなければ#f
を返します。
{data.skew-list
}
引数はskew listでなければなりません。
slが空のskew listなら#t
を、そうでなければ#f
を返します。
{data.skew-list
}
空のskew listに束縛されています。
{data.skew-list
}
skew list slの先頭にobjを追加した新たなskew listを作って返します。
O(1)の操作です。
{data.skew-list
}
skew list slの先頭要素を返します。O(1)の操作です。
slが空であればエラーが投げられます。
{data.skew-list
}
skew list slの、最初の要素を取り除いたskew listを返します。
O(log n)の操作です。
slが空であればエラーが投げられます。
{data.skew-list
}
skew list slのk番目の要素を返します。O(log n)の操作です。
kがslの範囲外を指している場合、fallbackが与えられていればそれが
返され、与えられていなければエラーが投げられます。
skew listはシーケンスでもあるので、ref
でアクセスすることもできます
(gauche.sequence
- シーケンスフレームワーク参照)。
{data.skew-list
}
skew list slの、k番目の要素をobjに変えた新たなskew listを
作って返します。元のslは変更されません。
O(log n)の操作です。
kがslの範囲外を指していた場合はエラーが投げられます。
{data.skew-list
}
skew list slの長さを返します。O(log n)の操作です。
skew listはシーケンスでもあるので、size-of
も使えます
(gauche.sequence
- シーケンスフレームワーク参照)。
{data.skew-list
}
skew list slの長さがn以下であれば#t
を、そうでなければ
#f
を返します。slの全長を求めてnと比較するより効率的です。
{data.skew-list
}
リストlisと同じ要素を同じ並びで持つskew listを作って返します。
lisが正式なリストでなければエラーが投げられます。
skew listはシーケンスでもあるので、coerce-to
を使うこともできます
(gauche.sequence
- シーケンスフレームワーク参照)。
{data.skew-list
}
lisは正式なリストまたはドットリストです (循環リストであってはいけません)。
二つの値を返します。lisの最後のcdrを除いた要素をその並びで持つ新たな
skew listと、lisの最後のcdrの値です。
{data.skew-list
}
skew list slの各要素を同じ並びで持つリストを作って返します。
skew listはシーケンスでもあるので、coerce-to
を使うこともできます
(gauche.sequence
- シーケンスフレームワーク参照)。
{data.skew-list
}
skew list slの要素を順に生成するジェネレータを作って返します。
{data.skew-list
}
skew list slを遅延シーケンスに変換します。
{data.skew-list
}
skew list slの、最初のk要素だけのskew list、
あるいは最初のk要素を取り除いた残りのskew listを返します。
{data.skew-list
}
(skew-list-take sl k)
と(skew-list-drop sl k)
の結果を
2つの値として返しますが、より効率が良いです。
{data.skew-list
}
2つのskew listをつなげたskew listを返します。
{data.skew-list
}
skew list slに対して、リストに対するfoldと同じような動作をします。
skew listはシーケンスでもあるので、ジェネリックなfold
を使うこともできます
(gauche.sequence
- シーケンスフレームワーク参照)。
{data.skew-list
}
skew list slの各要素にprocを適用した結果を集めた新たなskew listを
作って返します。procが適用される順序は決められていません。
複数のskew listに対してmap
したい場合は、
ジェネリックのmap
が使えます (gauche.sequence
- シーケンスフレームワーク)。
skew-list-map
は単一引数の場合に使える最適化を施してあります。