haskellでのBiQuadフィルタらしきものの実装、一応探せたけど読めなかった><;
http://code.haskell.org/~thielema/dsp/DSP/Filter/IIR/IIR.hs
この例だと関数も状態持ててしまいますが、要するに
next: State -> (State, Result)
みたいな関数を実装して、
scan: State -> (State -> (State, Result)) -> [Result]
みたいな汎用の関数を用意してやれば、
results = scan initial_state next
みたいな感じで実質ループにできますよね
std::iter::Iterator - Rust
https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.scan
たとえばこういうのとか見ると典型的なんですが