日本語 · English

takeLast — 末尾 n 点の打ち切り(直近 N)

分類: ストライド(本体層 core・選択子と別族) / シグネチャ: takeLast(n, until:) : Stream -> Stream / 名は確定(ADR-52)

意味

until: 以前(until: の点を含む)の入力点のうち、末尾 n 点だけを通す。take が 「先頭で打ち切る」の鏡像で、「直近 N 発火」を式で言う語(ADR-52——ADR-49 判断 6 の見送りを、 実需要〈レシピの発火例表示〉の成立を受けて改訂)。

終端 until: は必須(takefrom: の双対・一族の錨規約)。出力は (入力・n・until:)だけの純関数で、評価範囲はその外延の切り取り窓。「今」は言語に無い—— 動的な「直近」は、利用側が until: に現在時刻のリテラルを注入して式を生成する(決定性は不変)。

年数回の暦注(天赦日級)の直近 3 発火——「何日分の窓を取れば n 個入るか」の当てずっぽうが消える:

# eval: 2026-01-01..2026-12-31
@JP
tensha = [2026-01-06, 2026-03-05, 2026-05-25, 2026-07-24, 2026-10-06, 2026-12-21] covering: 2026-01-01..2026-12-31
tensha |> takeLast(3, until: 2026-08-21)
#=> 2026-03-05 2026-05-25 2026-07-24

until: ≤ 覆域の尾なら確定済みの過去側だけを数えるので、答えは註釈なしで確定的に出る (順方向 take の「covering の尾が常に今の近傍」と対照的な、鏡像の利点)。時刻を付けるなら 数える段は日の層・時刻付与は後at との標準合成):

# eval: 2026-01-01..2026-12-31
@JP
tensha = [2026-01-06, 2026-03-05, 2026-05-25, 2026-07-24, 2026-10-06, 2026-12-21] covering: 2026-01-01..2026-12-31
tensha |> takeLast(2, until: 2026-08-21) |> at(T07:00)
#=> 2026-05-25T07:00 2026-07-24T07:00

落とし穴

関連

take(先頭で打ち切る=双対)・stride(間引く)・ strideBy(幅で刻む)・at(時刻付与の標準合成)・ADR-31/38/49/52。