概要
ListLoopはリストを受け取って、要素を1つずつ取りだす反復器。
リストの要素がなくなったらループを止める。
リストの要素がなくなったらループを止める。
ListLoopは1つの入力と1つのオプション入力がある(オプション入力はShift+>で出すのであった)。
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
- "list" : リスト
- "by" : リストの要素のなくなり方を定義
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
- ListLoopがリストを受け取り、1つ目の要素1を取りだす。
- eachTimeがcollectを発動、collectはListLoopから1をもらう。
- (あと7回繰り返し)
- ListLoopはリストが空になったのでループをやめる。
- Finallyは第1入力にListLoopが最後に持っている8を、第2入力にcollectが集めたリストをもらって外に出力。
"By" : リストの要素のなくなり方
オプション入力 "by" のデフォルト値は「cdr」(最初の要素を削除する関数)。
つまりListLoopのデフォ動作「要素を1つずつ取りだす」を細かく見ると、
「リストの最初の要素を持つ→cdrする」になっている。
例えば(1 2 3 4)なら、
つまりListLoopのデフォ動作「要素を1つずつ取りだす」を細かく見ると、
「リストの最初の要素を持つ→cdrする」になっている。
例えば(1 2 3 4)なら、
- (1 2 3 4)の1を持つ cdrして(2 3 4)にする
- (2 3 4)の2を持つ cdrして(3 4)にする
- ・・・
例
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
もし"By"にcddr(前2つの要素を削除)を指定するとListLoopは以下のような動作。
- ループ1回目:最初の要素1を持つ リストはcddrして(3 4 5 6 7 8)に
- ループ2回目:最初の要素3を持つ リストはcddrして(5 6 7 8)に
- ループ3回目:最初の要素5を持つ リストはcddrして(7 8)に
- ループ4回目:最初の要素7を持つ リストはcddrして()に。空になったのでループ終了
#ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。
もし"By"にnthcdr 3(前3つの要素を削除)を指定するとListLoopは以下のような動作。
- ループ1回目:最初の要素1を持つ リストはnthcdr 3して(4 5 6 7 8)に
- ループ2回目:最初の要素4を持つ リストはnthcdr 3して(7 8)に
- ループ3回目:最初の要素7を持つ リストはnthcdr 3して()に。空になったのでループ終了
注意
うまくリストをなくすことができる関数を指定する必要がある。
でなければ無限ループする。
でなければ無限ループする。