strideBy — 幅で刻む「w ごと」
分類: ストライド(本体層 core) / シグネチャ: strideBy(w, from:) : Stream -> Stream / 名は確定(spec §5.4)
意味
起点 from: から幅 w の等差で点を刻む。stride が「入力の点を n 個ごと」
(点で数える)なのに対し、strideBy は「物理量 w ごと」(幅で刻む)——暦のリズムに
乗らない周期(火星の 1 sol・90 分ごと・36 時間ごと)のための演算子で、引数の種類の違いから二演算子に
割られている(spec §4.7・ADR-38)。
起点 from: は必須(ADR-31。stride と一族共通の規則)。
例
36 時間ごと(経過時間の複合幅):
# eval: 2026-01-01..2026-01-05
@JP
everyInstant |> strideBy(36h, from: 2026-01-01)
#=> 2026-01-01 2026-01-02T12:00 2026-01-04
火星の 1 sol ごとは everyInstant の例を参照
(strideBy(24h39m35.244s, from: …))。
落とし穴
- 幅の規約に注意:
dは市民日(DST で伸縮。うるう秒はスコープ外=ADR-33)、h/m/sは経過時間。混合 (1d12h)は静的エラー(ADR-12/28)。「毎日同じ時刻」が欲しいなら市民時(暦)の演算で、 「86400 秒ごと」が欲しいなら経過時間で——両者は DST の日にずれる。 - 「3 営業日ごと」のような数えの間引きは
stride。strideByは数えず測る。
関連
stride・everyInstant・幅リテラル(spec §5.5・ADR-11/12/28)。