日本語 · English

strideBy — 幅で刻む「w ごと」

分類: ストライド(本体層 core) / シグネチャ: strideBy(w, from:) : Stream -> Stream / 名は確定(spec §5.4)

意味

起点 from: から幅 w の等差で点を刻む。stride が「入力の点を n 個ごと」 (点で数える)なのに対し、strideBy は「物理量 w ごと」(幅で刻む)——暦のリズムに 乗らない周期(火星の 1 sol・90 分ごと・36 時間ごと)のための演算子で、引数の種類の違いから take・takeLast とともにストライド族四演算子に割られている (spec §4.7・ADR-38/49/52)。

起点 from: は必須(ADR-31。stride と一族共通の規則)。from: は前方専用——起点より前へは 刻まない(起点前の評価範囲は黙って空になる。壁時計 tick を全期間に張るなら、from: に単独時刻 リテラル Thh:mm を渡す=epoch 錨日 1970-01-01 での錨打ちで欠落が構造的に消える。市民日幅 1d 専用・ADR-51。日付つき anchor を書くなら評価範囲より前の日付を選ぶこと)。

例

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: …))。

落とし穴

ニューヨークの 2026 年 3 月 6 日から 9 日の市民日を物理の時間軸の上に並べた図(評価範囲 2026-03-06..2026-03-10・tz America/New_York)。3 月 8 日(日曜)は 02:00 に時計が 03:00 へ進むので市民日は 23 時間、ほかの 3 日は 24 時間。1d で刻む everyInstant |> strideBy(1d, from: 2026-01-01T09:00) は 3/6・3/7・3/8・3/9 とも 09:00 に貼り付く(3/7 09:00 から 3/8 09:00 までは 23 時間)。24h で刻む strideBy(24h, from: 2026-01-01T09:00) は 3/6 09:00・3/7 09:00 のあと 3/8 10:00・3/9 10:00 と切替日から 1 時間ずれたまま進む。

関連

stride・take・everyInstant・幅リテラル(spec §5.5・ADR-11/12/28)。