読者です 読者をやめる 読者になる 読者になる

特定のビット列が現れる場所を探す (Gauche)

ジェネレータ、遅延シーケンス、パターンマッチングを使ってみました。
書いた後に気づいた、Shiro さんによる gappend-map (& byte-generator->bit-generator) の別解 (http://blog.practical-scheme.net/shiro/20120217-nash-cipherer, bytes->bools)。継続が使用されない分、こっちのほうが速そう。

最後のテストで "hogefuga" という文字列の (Gauche 内部エンコーディングな) ビット列から、010110 というパターンを探しています。
その結果、3 バイト目の 1 (= 7 - 6) ビット目に見つかったことが分かります。
遅延シーケンスを用いているので、その先のビット列は読み込まれないため、巨大なファイルでも安心。
ちなみに Gauche リファレンスの遅延シーケンスの項目に書かれている内容そのままです。てへぺろ