日本語 · English

snapTo — 属する窓の先頭点へ写す(floor)

分類: 点変換(本体層 core) / シグネチャ: snapTo(w) : Stream -> Stream / 名は確定(RC2・spec §5.4)

意味

各点を、その点が属する w 窓の先頭点へ写す(floor)。粒度の継ぎ目を揃える演算子—— 時刻つきの天文事象(節気の瞬間・朔の瞬間)を「その日」に落とす、時刻列を「その月」の初めに畳む、など。

公開境界語(monthStart = month |> first=窓→点)とは入口が違う補完関係にある——snapTo点→(属する窓の)点で、選択子を経由しない(ADR-30 (6) で基本語として確定)。

第二の役割(ADR-36): 出力は構成的に w の要素グリッドに整列するため、結合子 &/\ や 軸所属の整列検査(spec §4.5)への明示の整合手段を兼ねる。既に整列している点には恒等で、 整列主張の付け替えだけが起きる。

立春の瞬間(2/4 05:02)を暦日に落とす:

# eval: 2026-01-01..2026-03-01
@JP
sekki = [2026-01-05T17:23, 2026-01-20T10:45, 2026-02-04T05:02]
  covering: 2026..2026
  labels: [小寒, 大寒, 立春]
sekki |> filter(s => sekki(s) == 立春) |> snapTo(day)
#=> 2026-02-04

朔の瞬間を朔日(旧暦月の境界に使う日付)へ:

# eval: 2026-01-01..2026-02-01
@JP
newMoons = [2026-01-19T04:52]
newMoons |> snapTo(day)
#=> 2026-01-19
#~> 範囲外 2026-01-01..2026-02-01(newMoons covering 2026-01-19T04:52..2026-01-19T04:52)

落とし穴

関連

shiftrebase(日付ラベル対応の再錨)・segmentBy(snap したマーカーで切る)・ 結合子(整列検査の整合手段)・公開境界語(spec §3.6)・ADR-27/30/36。