2. Concepts 까지의 표현식만을 사용하면 고정된 행마법을 모두 만들 수 있습니다.
3. Controls 에서는 보다 고차원적이고 유동적인 행마법을 만드는 도구를 소개합니다.
프로그래밍에 익숙하다면 쉽게 이해할 수 있을 것입니다.
false값 종료 규칙을 무시하거나 오히려 false를 이용하는 특별한 '제어식'들이 있습니다. 이 식들은 '식 연쇄'의 실행 흐름(어떤 식이 다음에 실행될지)을 직접 제어합니다.
다음 5가지 식은 직전 식이 false를 반환했더라도 식 연쇄를 종료시키지 않습니다.
whilejmp(n)jne(n)notlabel(n)while, jmp(n), jne(n): 점프 제어이 식들은 false를 받아도 연쇄를 멈추는 대신, 항상 true를 반환하여 연쇄의 생명을 이어갑니다. 바로 이 식들이 행마법을 유연하게 만드는 초석이 됩니다.
jmp(n) (JUMP): 직전 값이 true이면 label(n)으로 점프합니다. false이면 아무것도 안 합니다.jne(n) (JUMP if NOT): 직전 값이 false이면 label(n)으로 점프합니다. true이면 아무것도 안 합니다.while: 직전 값이 true이면 do로 점프합니다. false이면 아무것도 안 합니다.
jne로 프로그래밍의if를 만들 수 있습니다. 바로 앞의 식이false면 점프하는 행동을 이용해서, 특정 구간 뒤로 점프하도록 한다면 그 사이의 식들은jne앞의 조건이 만족될 때만 실행됩니다. 4.1 Example: Bouncing-Bishop 에 이러한 사용법이 등장합니다.
not: 값 반전not은 논리를 제어하는 가장 간단한 식입니다. 3.3 Look around 과 함께 유용하게 쓰일 수 있습니다.
true였다면, false를 반환합니다.