日本語 · English

since — 点集合を「p 以後」に切り出す

分類: 糖衣(stdlib・Gregorian 公開語=変換) / シグネチャ: since(p) : Stream -> Stream(p は日付つきの日時リテラル) / 名は確定(ADR-55・2026-10-19・spec §5.4) / 1.1 の追加拡張

意味

入力の点のうち p 以後(p を含む) を残す。展開は filter 1 段(糖衣=spec §4.8):

since(p) = s => s |> filter(t => t >= p)

対の before(p より前・含まず)と組んで半開 [since, before) を切る——評価範囲 [from, to)・窓・ isOpen と同じ境界規約。p は在圏 premise の tz: で時点に解決される(ADR-33)——since(2026-10-26) はその tz の 10/26 の開始瞬間。

時点どうしの順序 t >= p は 1.1 で定義した(spec §4.9「等値・順序の型」)。chronos 上の瞬間の全順序で、単位を 持たない——epochOrdinal(hour, …) の比較が「時の床」で切っていた形(14:30 を渡すと 14:00 が入る)と違い、 since(…T14:30) は 15:00 から。

例

日粒度——10/13 以後の営業日(10/12 はスポーツの日):

# eval: 2026-10-01..2026-10-20
@JP
bizDay |> since(2026-10-13)
#=> 2026-10-13 2026-10-14 2026-10-15 2026-10-16 2026-10-19

時刻付き——毎正時の列を 14:30 から 18:00 の手前まで。目盛り外の錨でも床に落ちない(15:00 から):

# eval: 2026-10-26..2026-10-27
@JP
hourly = everyInstant |> strideBy(1h, from: 2026-01-01)
hourly |> since(2026-10-26T14:30) |> before(2026-10-26T18:00)
#=> 2026-10-26T15:00 2026-10-26T16:00 2026-10-26T17:00

「締め切りまでの残り営業時間」は hourly |> filter(t => isOpen(t)) |> since(今の日時) |> before(締め切り) (design/40-examples/11 §(n)・stdlib §2)。

落とし穴

関連

before(対・p より前)・filter(展開先)・at(時刻の付与)・ epochOrdinal(1.0 の書き方=序数の床比較)・takeLast(until: は点包含)・ spec §4.8/§4.9・ADR-55。