Skip to main contentModule extra_methods
Source - arr_at 🔒
- arr_entries 🔒
- arr_find_last 🔒
- arr_find_last_index 🔒
- arr_flat_map 🔒
- arr_keys 🔒
- arr_reduce_right 🔒
- arr_values 🔒
- iterator_concat_static
Iterator.concat(...iterables)(ES2025 Standard)。
複数のイテラブルオブジェクトの要素を順番に連結した新しい Iterator を返す。- iterator_drop
Iterator.prototype.drop(n)(ES2025)。- iterator_every
- iterator_filter
Iterator.prototype.filter(fn)(ES2025)。- iterator_find
- iterator_flat_map
Iterator.prototype.flatMap(fn)(ES2025 Iterator Helpers。map/filter/take/
drop/toArray/forEach/reduce/some/every/find は既に対応済みだったが、
この提案の最後の1つが丸ごと未対応だった)。各要素にコールバックを適用し、
その戻り値(イテラブルであることが前提)を1段だけ展開して連結する
(Array.prototype.flatMap と同じ「1段だけ」の展開規則)。- iterator_for_each
Iterator.prototype.forEach(fn)(ES2025)。- iterator_from_static
Iterator.from(iterable)(ES2025 Standard)。
指定されたイテラブルオブジェクトから Iterator オブジェクトを返す。- iterator_map
Iterator.prototype.map(fn)(ES2025 Iterator Helpers)。- iterator_next
- iterator_reduce
Iterator.prototype.reduce(fn, initial?)(ES2025)。- iterator_remaining 🔒
make_iterator() の残り要素(_pos 以降)を取り出し、消費済みにする(_pos を末尾へ
進める)。Iterator Helpers(ES2025: map/filter/take/drop/toArray/forEach/
reduce)用の共通ヘルパ。仕様上これらは遅延評価(要素を1つずつ必要な分だけ取り出す)
だが、本エンジンの軽量イテレータ表現(_items/_pos を持つ Obj::host("iterator"))
では、呼び出し時点で残り要素をまとめて処理する即時評価で近似する(無限イテレータの
take 等、遅延性に依存するケースは非対応。他の組込み簡略化と同種の割り切り)。- iterator_self
- iterator_some
Iterator.prototype.some(fn)/.every(fn)/.find(fn)(ES2025 Iterator Helpers。
map/filter/take/drop/toArray/forEach/reduce は既に対応済みだったが、
同じ提案に含まれるこの3つが丸ごと未対応だった)。他のヘルパと同じ「残り要素を
まとめて処理する即時評価」方式(無限イテレータには非対応の簡略実装)。- iterator_take
Iterator.prototype.take(n)(ES2025)。- iterator_to_array
Iterator.prototype.toArray()(ES2025)。- make_iterator
entries/keys/values が返すべき本物の Iterator オブジェクト(.next()/
[Symbol.iterator] を持つ)を、Obj::host("iterator") + 内部プロパティ
_items/_pos で近似する(ObjKind に新しい variant を追加すると全 exhaustive match
への波及が大きいため、既存の Host タグ機構に乗せる軽量な実装)。以前は単なる配列を
返しており、for...of(配列自体が for-of 可能なため気づかれなかった)は動くが
const it = arr.values(); it.next() のような明示的なイテレータプロトコル駆動が
「next が存在しない」で壊れていた。- promise_all_settled_static 🔒
- promise_any_static 🔒
Promise.any(iterable)(ES2021)。以前は全て reject した場合に最後の reject 理由
だけをそのまま投げており、仕様上必要な AggregateError(.errors に全 reject 理由を
保持する専用の例外型。AggregateError 自体が丸ごと欠落していた)を一切使っていなかった。
途中の理由が失われる(1つ目が reject でも最後だけ見える)バグも合わせて修正。- promise_race_static 🔒
- resolve_maybe_thenable 🔒
- 値を「Promise 化した状態」に正規化する共通ヘルパ。本物の Promise ならその
state、汎用 thenable(
.then を持つがそれ自体は Promise ではないオブジェクト。
Promise.resolve/await は同化に対応済みだったが allSettled/race/any の
配列要素だけ「非 Promise」として素通ししてしまう非対称なバグがあった)なら
新規 pending state を作って promise_resolve(thenable 同化に対応済み)に通す。
どちらでもなければ None(呼び出し側は元の値をそのまま扱う)。 - str_at 🔒