日本語 · English

before — 点集合を「p より前」に切り出す

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

意味

入力の点のうち p より前(p を含まない) を残す。展開は filter 1 段(糖衣=spec §4.8):

before(p) = s => s |> filter(t => t < p)

対の since(p 以後・含む)と組んで半開 [since, before) を切る——評価範囲 [from, to)・窓・ isOpen と同じ境界規約。before は終点側の双対で、1.0 の核では epochOrdinal の序数比較(単位つき)か差 \ でしか書けなかった(差は整列「なし」の和で止まり、窓を落とす)。

例

日粒度——10/13 より前の営業日(10/12 はスポーツの日):

# eval: 2026-10-01..2026-10-20
@JP
bizDay |> before(2026-10-13)
#=> 2026-10-01 2026-10-02 2026-10-05 2026-10-06 2026-10-07 2026-10-08 2026-10-09

時刻付き——締め切り当日の 9 時から 17 時の手前まで(17:00 は入らない):

# eval: 2026-11-04..2026-11-05
@JP
hourly = everyInstant |> strideBy(1h, from: 2026-01-01)
hourly |> since(2026-11-04T09:00) |> before(2026-11-04T17:00)
#=> 2026-11-04T09:00 2026-11-04T10:00 2026-11-04T11:00 2026-11-04T12:00 2026-11-04T13:00 2026-11-04T14:00 2026-11-04T15:00 2026-11-04T16:00

落とし穴

関連

since(対・p 以後)・filter(展開先)・takeLast(until: は点包含)・ epochOrdinal(1.0 の書き方)・spec §4.8/§4.9・ADR-55。