[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
util.queue
- キュー キュー(FIFO)機能を提供します。この実装は安全さよりスピードに重点を置いています。 キューは単に先頭と末尾のpairで表現され、多くのオペレーションでキューが正しいかどうかは チェックされません。
SLIB (slib
- SLIBインタフェース参照)にはより安全なキューの実装があります。
このAPIはSLIBの実装の上位互換です。特定の手続きや構造体の中だけで使うため、
厳しいチェックが必要でない場合にはこのモジュールを使うのが良く、そうでない場合は
SLIBのものが良いでしょう。要求仕様によって使い分けて下さい。
空のキューを作って返します。
objがキューであれば#t
を返します。この操作に限り、objが
本当にキューの構造をしているかどうかのチェックがなされます。
objが空のキューであれば#t
を返します。
キューの中にあるアイテムの数を返します。
キューqueueのコピーを返します。
objをキューqueueの末尾に追加します。
一つ以上のobjを与えることができ、その場合はそれらが順にenqueueされます。
(註:SLIBのenqueue!
はオプショナルな引数を取りません)。
objをキューqueueの先頭に追加します。
一つ以上のobjを与えることができ、その場合はそれらが順にpushされます。
(註:SLIBのqueue-push!
はオプショナルな引数を取りません)。
objが既にqueueの中に含まれている場合にはqueueを
変更しないことを以外には、enqueue!
およびqueue-push!
と同じ
動作をします。objが含まれているかどうかの検査は
2引数の関数eq-procで行います。
キューqueueの先頭からひとつ要素を取って返します。
二つの手続きは全く同じ動作をします。queue-pop!
はqueue-push!
と
ペアで使われていることを強調したいときに使うと良いでしょう。キューが空の場合は
エラーが報告されます。
キューの全ての内容をリストにして返します。キューそのものは空になります。
キューが既に空の場合は空リストが返されます。
下のqueue->list
も参照してください。
キューqueueの先頭もしくは末尾の要素を返します。キューそのものは変更されません。 キューが空の場合はエラーが報告されます。
与えられたリストlistの各要素をその順で持つようなキューを作成して返します。
キューqueueの内容をリストにして返します。
dequeue-all!
と異なり、キューそのものの内容は変化しません。
Gaucheではqueue->list
は新しいリストをアロケートしてキューの
内容をコピーします (dequeue-all!
はコピーをせずにキューの内部の
リストをそのまま返します)。組込みでqueue->list
を持っているScheme
実装がいくつかありますが、その中にはqueue->list
がキューの
内容をコピーすることを保証していないものがあるので、それらの処理系と
共有するコードではqueue->list
がリストをコピーすることを
あてにしない方が良いでしょう。
キュー内の要素のうち述語predを満たす最初の要素を返します。
引数の順序はSRFI-1のfind
に揃えました (リストの探索参照)。
キューから、述語predを満たす要素を全て取り除きます。
要素が削除された場合は#t
が、そうでなければ#f
が返されます。
引数の順序はSRFI-1のremove
に揃えました (リストのフィルタおよび分割参照)。
移植性に関する註:Scheme48には、述語ではなく削除するオブジェクトそのものを取る
delete-from-queue!
がありますが、引数の順序が逆(キューが先)になっています。
まぎらわしい衝突を避けるため、敢えてdelete-from-queue!
は
提供しませんでした。remove-from-queue!
を使えば、Scheme48互換の方法でも、
あるいはSRFI-1と一貫性のある方法でもdelete-from-queue!
をすぐ書けるでしょう。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.