ADR-49: 先頭 N 選択——take(n, from:)(COUNT 相当)
判断: ストライドの「数える」側に第 3 の語 take(n, from:) : Stream -> Stream を採用する
——from: 以後の入力点の先頭 n 点だけを通す(spec §1.2 が「需要待ち」としてきた「列の先頭
N 個」に、40-examples/11 の調査で実需要の初証拠〈rrule.js #456=「キャンセルが出ても補充して
合計 n 回」・講座/レッスン業の定番〉が立ったことによる導入。候補設計 draft §1.30=4 視点並列
検証済み〈全視点支持〉・設計者裁定 2026-08-17 を経た ADR 化)。
-
族の較正: stride は「点で数えて間引く」・take は「点で数えて打ち切る」・strideBy は 「幅で刻む」(ADR-38 判断 13 の対句に第 3 項)。一族の共通項は from: 必須(ADR-31 判断 3——「一族両方」は本 ADR で三語に読み替え)と入力カウント(ADR-38 判断 10)。
-
意味論: 出力=from: 以後(from: の点を含む)の入力点のうち通し順位(1 起点)が n 以下の もの。from: より前の入力点は出力しない(stride の現実装と一致・実測確認済み)。出力は (入力・n・from:)だけの純関数で、評価範囲 [a, b) はその外延の切り取り窓(範囲依存の 再数えはしない)。第 n 点より後は正当な空(ADR-15・ADR-37 判断 2——註釈なしの空)。
-
n の域:
take(0)・負値・非整数は静的エラー(stride(0) の「黙って空」根絶=ADR-38 判断 12 と同規約)。 -
COUNT の轍を構造で踏まない: 「除外後に数える」は合成順で出る——
(lessons \ cancelled) |> take(5, from: …)。RRULE の COUNT は除外前の生成集合を数える ため EXDATE で総回数が痩せる(rrule.js #456 の報告そのもの)が、take には「除外前」という 概念が式に存在しない。補充も自然(除外で減った分、後続点が繰り上がって n 個に達する)。 -
輸送行(ADR-37 判断 4 の表に追加): 基礎は stride 行の同型=「順位数えが註釈区間に交差 したら最初の交差点から先すべて」。ただし take 固有の縮小を規定する——第 n 点が交差より 前に確定した場合、確定後に始まる註釈区間は輸送しない(出力は入力の先頭 n 点にしか依存 しないため過大近似の正当な縮小。stride 行の素通しでは判断 2 の「n 到達後は正当な空・註釈 なし」と矛盾するため、この縮小は装飾でなく整合性の要件)。覆域切れが第 n 点より前なら 以後すべて註釈=順位が暫定であることが可観測(motivating example の休講データは covering の 尾が常に「今」の近傍にあり、これは例外でなく定常状態——検証で設計本体に昇格した論点)。
-
窓付き入力は誘導つき静的エラー: 最頻の誤用は「毎月最初の 3 営業日」を
bizDay |> within(month) |> take(3, …)と書く形(take は通しなので 1 月の 3 点で止まる)。 正道(within の後の nth・ordinalIn の述語)をエラー文言で示す。「後ろから N 個」は導入しない (需要未確認・終端起点の数えが covering 依存になる)。期間限定を take で書くのも誤用 (正道は評価範囲の分離——reference の落とし穴)。 -
整列・有限性: take は入力整列を保存(ADR-36 整列表に stride と同じ行)。出力は静的に 有限(≤ n)——ADR-39 の有限性分類に行を追加(生成子由来でも take を通せば labels: マーカー 適格になる、という副産物つき)。
経緯: 需要待ち(spec §1.2 受け皿表)→ 11 の調査で実需要の初証拠 → 裁定「候補設計着手」→
候補設計(draft §1.30)→ 4 視点並列検証(全視点支持。輸送行の縮小規定の発見・覆域端規約の
本体昇格・窓付き入力の静的エラー化)→ ADR 化・実装(stride の from: 位相機構を共有・差分
約 20 行・テスト 8 本。名の衝突は全 grep で不検出——first(n, from:) 代案は窓選択子 first と
衝突するため不可)。spec §1.2 の「できないこと」表から当該行を外す(本丸の改稿)。