?DO — 조건부 루프 시작

?DO — 조건부 루프 시작

?DO(question-do)는 루프 한계가 시작과 같으면 루프 본문을 건너뛰는 루프 시작 단어예요.

출처: ?DO — Forth 2012 Standard

본문

실행 (Execution)

( limit start -- ) ( R: -- loop-sys )

설명

limitstart를 비교해요. 같으면 루프를 건너뛰고, LOOP/+LOOP 뒤에서 실행을 계속해요. 그렇지 않으면 루프 제어 매개변수를 설정하고 루프 본문을 실행해요.

참조 (See)

  • 6.1.0140 +LOOP
  • 6.1.1240 DO
  • 6.1.1680 I
  • 6.1.1760 LEAVE
  • 6.1.1800 LOOP
  • A.6.1.2390 ?DO

합리성 (Rationale)

전형적인 사용:

: X ... ?DO ... LOOP ... ;

테스트 (Testing)

: qd1 ?DO I 10 +LOOP ;
T{ 0 0 qd1 ->  }T
T{ 0 1 qd1 -> 0 1 2 3 4 5 6 7 8 9 }T
T{ 1 0 qd1 ->  }T
: qd2 ?DO I 3 > IF LEAVE ELSE I THEN LOOP ;
T{ 0 1 qd2 -> 0 1 2 }T
: qd3 ?DO I 1 +LOOP ;
T{ 0 0 qd3 ->  }T
T{ 0 3 qd3 -> 0 1 2 }T
T{ 3 0 qd3 ->  }T
: qd4 ?DO I -1 +LOOP ;
T{ 0 0 qd4 ->  }T
T{ 2 0 qd4 -> 2 1 0 -1 -2 }T
: qd5 ?DO I -10 +LOOP ;
T{ 1 0 qd5 -> 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 }T

더 알아보기 (Learn more)

출처: ?DO — Forth 2012 Standard