日本語 · English

rephase — 窓の切れ目を単位でずらす糖衣(再位相)

分類: 派生の糖衣(premise 層) / シグネチャ: |> rephase(δ, on: W, unit: U) : premise -> premise / 正式名(2026-07-26 裁定・旧仮称 shiftBoundary・spec §5.4)

意味

W の切れ目を、単位 Uδ ずらした派生 premise を作る糖衣。with 上書きへの 機械的展開で消せる:

rephase(δ, on: W, unit: U)  ≡  W = U span (_ => k) phase: ((φ₀ + δ) mod k)   # 負の δ も法で正規化(F65)・base の label: は保存(F96)
#   k  = W が含む U の個数(year ⊃ month なら 12)
#   φ₀ = base での W の位相(Gregorian の year は 0)

W を「Uk 個ずつ束ねる span」と見て、その位相を δ 進めるだけ——日付は動かない(I1)。

会計暦の日常形。core 展開(with 直書き)と同じ結果になる:

# eval: 2025-01-01..2028-01-01
premise Fiscal2 = Gregorian |> rephase(+3, on: year, unit: month)
premise FY2 { calendar-system: Fiscal2; tz: "Asia/Tokyo"; wkst: Mon }
@FY2
everyDay |> within(year) |> first
#=> 2025-04-01 2026-04-01 2027-04-01

落とし穴

関連

with(展開先)・spanphase: の意味)・spec §3.7・糖衣の展開規則(§4.8)。