LOOP — 루프 종료
LOOP — 루프 종료 (인덱스 +1)
LOOP는 루프 인덱스를 1 증가시키고, 한계에 도달하지 않으면 루프 시작으로 분기하며, 도달하면 루프를 종료하는 코어 단어예요.
본문
컴파일 (Compilation)
( C: do-sys -- )
아래 주어진 실행 시점 의미를 현재 정의에 추가해요. do-sys가 주는 위치와 다음 제어 이동 위치 사이의, LEAVE의 미해결 발생 전부의 목적지를 해결해서 LOOP 뒤의 단어들을 실행하도록 해요.
실행 (Run-time)
( -- ) ( R: loop-sys1 -- | loop-sys2 )
루프 제어 매개변수를 사용할 수 없으면 애매한 조건이 존재해요. 루프 인덱스에 1을 더해요. 그 후 루프 인덱스가 루프 한계와 같으면, 루프 매개변수를 버리고 루프 바로 다음에서 실행을 계속해요. 그렇지 않으면 루프의 시작에서 실행을 계속해요.
참조 (See)
- 6.1.1240 DO
- 6.1.1680 I
- 6.1.1760 LEAVE
- A.6.1.1800 LOOP
합리성 (Rationale)
전형적인 사용:
: X ... limit first DO ... LOOP ... ;
또는
: X ... limit first ?DO ... LOOP ... ;
테스트 (Testing)
T{ : GD1 DO I LOOP ; -> }T
T{ 4 1 GD1 -> 1 2 3 }T
T{ 2 -1 GD1 -> -1 0 1 }T
T{ MID-UINT+1 MID-UINT GD1 -> MID-UINT }T