IncrementalObject["name"][arg1,arg2,…]
指定された名前の増分オブジェクトを作成する.
IncrementalObject[name,data]
一度に一つの値を返す増分オブジェクトを表す.
IncrementalObject
IncrementalObject["name"][arg1,arg2,…]
指定された名前の増分オブジェクトを作成する.
IncrementalObject[name,data]
一度に一つの値を返す増分オブジェクトを表す.
詳細
- 増分オブジェクトは,Wolfram Compilerであらかじめ構築される.
- NextValueを増分オブジェクトと一緒に使って一度に一つづつ値を取得することができる.
- 増分オブジェクトが使い果たされると,返される値は失敗オブジェクトになる.
- 増分オブジェクトは,TableやDoのような反復子を使う関数で使うことができる.
- 増分オブジェクトが返す値は,任意のWolfram言語の式でよい.
- ソースを取る増分オブジェクトは,式,他の増分オブジェクト,増分関数を使うことができる.
- Wolfram言語関数の中には増分オブジェクトの形式を持つものがある.
- "name"は以下の形式でよい.
-
"Identity" 式の要素である値を返す "Range" Rangeにおけるような反復子の数値を返す "Select" Selectにおけるように基準を満たす値を返す "Take" Takeにおけるように固定数の値を返す "Map" Mapにおけるように関数を適用して値を返す "FoldList" FoldListにおけるように,繰り返し関数を適用した結果の値を返す "Permutations" Permutationsにおけるように,リストの並替えである値を返す "Subsets" リストの部分集合である値をSubsetsとして返す "Tuples" Tuplesにおけるように,リストからの3つ一組の値を返す
例題
すべて開く すべて閉じる例 (2)
obj = IncrementalObject["Identity"][{1, 2}]NextValue[obj]NextValue[obj]NextValue[obj]増分オブジェクトは,Tableのソースとして使われる場合は残っているすべての要素を返す:
obj = IncrementalObject["Identity"][{1, 2, 3}];
Table[e, {e, obj}]obj = IncrementalObject["Identity"][{1, 2, 3}];
NextValue[obj]Tableは残っている要素のみを返す:
Table[e, {e, obj}]増分オブジェクトはDoのソースとして使うことができる:
obj = IncrementalObject["Identity"][{a, b, c}];
Do[Echo@e, {e, obj}]スコープ (5)
増分オブジェクトによって返される値は,任意のWolfram言語の式でよい:
obj = IncrementalObject["Identity"][{f[1], f[2], f[3]}];
Table[e, {e, obj}]増分オブジェクトは,順列のような条件付きのソースから構築できる:
obj = IncrementalObject["Permutations"][{1, 2, 3}]NextValue[obj]Table[e, {e, obj}]段階的に作業すると結果が一つずつ生成され,使用されるメモリ量はすくなくなる:
MaxMemoryUsed[Do[e, {e, IncrementalObject["Permutations"][{1, 2, 3, 4, 5, 6, 7, 8}]}]]Permutations関数を用いた関連する操作は,すべての順列を一度に生成し,はるかに多くのメモリを使用する:
MaxMemoryUsed[Do[e, {e, Permutations[{1, 2, 3, 4, 5, 6, 7, 8}]}]]これほど多くのオブジェクトに対して,すべての順列を作成することは不可能である:
obj = IncrementalObject["Permutations"][Range[100]];
NextValue[obj]Do[NextValue[obj], {100000}];
NextValue[obj]obj = IncrementalObject["FoldList"][Plus, 0, Range[10]];
NextValue[obj]Table[e, {e, obj}]増分オブジェクトは別の増分オブジェクト内にネストすることができる.このように増分範囲を使用することで,連続する整数がテストできる:
obj = IncrementalObject["FoldList"][Plus, 0, IncrementalObject["Range"][2^50]];Table[NextValue[obj], {100}]増分オブジェクトは状態を保持しており,他の増分オブジェクトのソースとして使用されてもクローンされない:
obj = IncrementalObject["Range"][2^20];
NextValue[obj]obj1 = IncrementalObject["Select"][obj, PrimeQ];
Table[NextValue[obj1], 10]NextValue[obj]fibComp = FunctionCompile[IncrementalFunction[Function[{}, Module[{a = TypeHint[0, "InertExpression"], b = TypeHint[1, "InertExpression"]}, Do[IncrementalYield[a];{a, b} = {b, a + b};, {Infinity}]]]]]ds = fibComp[];
Table[NextValue[ds], {10}]obj = IncrementalObject["Select"][fibComp[], EvenQ]Table[NextValue[obj], {40}]おもしろい例題 (1)
増分フィボナッチ数 (1)
obj = IncrementalObject["Map"][First, IncrementalObject["FoldList"][Module[{a, b}, {a, b} = #1;{b, a + b}]&, {0, 1}, IncrementalObject["Range"][10^6]]]Do[NextValue[obj], {1000}];NextValue[obj]Fibonacci関数を用いて実行した同じ計算:
Fibonacci[1001]テキスト
Wolfram Research (2026), IncrementalObject, Wolfram言語関数, https://reference.wolfram.com/language/ref/IncrementalObject.html.
CMS
Wolfram Language. 2026. "IncrementalObject." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/IncrementalObject.html.
APA
Wolfram Language. (2026). IncrementalObject. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/IncrementalObject.html
BibTeX
@misc{reference.wolfram_2026_incrementalobject, author="Wolfram Research", title="{IncrementalObject}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/IncrementalObject.html}", note=[Accessed: 28-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_incrementalobject, organization={Wolfram Research}, title={IncrementalObject}, year={2026}, url={https://reference.wolfram.com/language/ref/IncrementalObject.html}, note=[Accessed: 28-October-2026]}