特定のビット列が現れる場所を探す (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 リファレンスの遅延シーケンスの項目に書かれている内容そのままです。てへぺろ。