YIELD関数を作ってみた
現在、前の投稿で考えていたYIELD関数を作っています。機能は少し変わりました。実際に作っているYIELD関数はYIELD(関数名, 引数1, 引数2,..., '変数1 変数2 ...')でジェネレーターオブジェクトを生成します。NEXT(ジェネレーター)で最後の引数で指定した変数1,変数2,..の値が変化するたびに値を配列にして返します。関数の処理が終わると代わりに0を返します。例えば
procedure range(n) i <- 1 A <- [] while i <= n do A[i] <- i i <- i + 1 end-while return A end-procedure g <- YIELD(range, 3, 'i A') v <- NEXT(g) while v /= 0 do print('%s\n', v) v <- NEXT(g) end-while
と書けば、次のように出力されます。
[1, []] [2, [1]] [3, [1, 2]] [4, [1, 2, 3]]
デモ動画も良かったらどうぞ