Loading
counter (ループを作る)
形式
counter( $start, $skip, $end, $counter)
引数
- $start: ループの初期値
- $skip: SKIP値
- $end: 終了値
- $counter: カウンタ値(結果)
完了時の動作
- 通常時:次の述語を実行に移ります。
- $start,$skip,$endが矛盾する時:バックトラックします。
バックトラック時の動作
- カウント時:次の述語を実行に移ります。
- カウント終了時:バックトラックします。
説明
ループを構成する述語です。BASICやC言語のfor文に相当します。
$startを初期値として与えられ、ループをする(バックトラックする)毎に$skipが加算され、$endを超えた段階でループが終了(バックトラック)します。
ループ中$counterに現在のカウンター値が入ります。$start,$skip,$endの値により$counterに$endの値が入ることがあります(例 $start:1, $skip:1, $end:10の時、$counterには1から10の値が入ります)。
$start,$skip,$endが矛盾する場合(例 $start:1, $skip:-1, $end:10の時、$startに$skipをいくら足しても$endに到達しない)は、即座にバックトラックします。
※counter述語を使ってループを構成する場合、next述語と組み合わせて使用します。
コード例(lib/counter.p)
,prtn('start')
,counter(1, 1, 10, $c)
,prtn($c)
,next
,prtn('end')
;
実行例
D:\sample\lib>adp counter.p
start
1
2
3
4
5
6
7
8
9
10
end
Powered by ADP.