タラバガニー設計局stalins.clubNOTE/notes/xiter-retracted

xiter は取り下げ済み

イテレータのアダプタ (Map / Filter / Reduce など) が標準ライブラリに無い、という件には正確な現況がある。「まだ決まっていない」ではなく、「当面入らないことが決まっている」である。

x/exp/xiter (#61898) は Map / Filter / Reduce / Zip / Concat / Limit / Merge / Equal を揃えた一式の提案だったが、2025-05-21 に declined as retracted になっている。rsc の「wind this down」という発言を受けて、aclements が「イテレータはまだ若い。よく使われるアダプタがあるなら個別に提案してくれ」とコメントしてクローズした。

後続の提案には明確に釘が刺されている。iter: None/Single/Map (#76481, 2025-11-27 duplicate クローズ) のコメントには次のようにある。

#61898 と重複する新提案はクローズから最低2年 (= 2027年5月) まで歓迎しない。出すなら個人の体験談ではなくエコシステム全体の利用統計を添えること

この2年という期限は 2027 年 5 月を指す。iters パッケージ提案 (#75202, 2025-08-30)、iterMap/Filter/Reduce を足す #70761 (2024-12-10)、#69702 (2024-09-28) もすべて既にクローズ済みである。api/go1.27.txt を見ても iter パッケージへの追加はゼロで、iter: add Every, Some の CL 745440 も 2026-04-15 時点で NEW (未マージ) のままになっている。

つまりイテレータのアダプタは、Go チームが「当面追加しない」と明示的に決めている領域である。だからこそ、iter.Seq[E] を自前の型に包んでメソッドとして Map を実装する、という書き方に価値が出る (詳しくは iter.Seq と range-over-func)。ジェネリクスメソッドが無ければこの手のメソッドチェーンは書けなかったので、ジェネリクスメソッド (Go 1.27) の動機のひとつになっている。

なお、この経緯は当初「提案のまま止まっている」と誤って記録されていたものを、2026-08-16 に「取り下げ済み」へ訂正した経緯がある。issue の状態は opendeclined で意味がまったく異なるため、確認し直す価値があった。

std 唯一のジェネリクスメソッドについては 標準ライブラリ唯一のジェネリクスメソッド rand.N を参照。

出典

  • #61898
  • #76481
  • #75202
  • #70761
  • #69702
  • Go Release Party 1.27 の発表資料リポジトリ memo.md §2、slide/deck.mdstream スライドのフッターノート

▸ ノート一覧に戻る