--- date: 2025-06-18 16:39 --- #mimium #memo [Conditional stateful function call will not handle shiftstate position properly · Issue #71 · mimium-org/mimium-rs · GitHub](https://github.com/mimium-org/mimium-rs/issues/71) [[mimium]]のif文は選択的にブランチを実行するので、例えば ```rust fn dsp(){ if (random()){ gen_a() }else{ gen_b() } } ``` のようなコードを書くと、`gen_a`と`gen_b`はそれぞれランダムなサンプルレートで内部を更新するという形になってしまう。 [[Faust]]の`select`プリミティブが両方のブランチを常に評価する戦略を取っている理由はこれを避けるため。 ただ、そういう意味では[[Ondemand primitive for Faust]]をmimiumのif文で再現できるとも言える。 つまり、アップサンプルやダウンサンプルを組み込み関数を新たに定義することなく、ライブラリで定義できる。(サンプルレートの動的な変化とかにどう対応するんだよという問題はあるけど)