解説:if/verify関係

  • if(if・・・else)
 条件分岐の際に使用します。
 「else」は省略可能です。

  • (if <condition> <instruction1>...<instructionN>)
 <condition>が「true」であるかどうかを判定し、「true」であれば<instruction1>~<instructionN>を実行して、次へ進みます。
 「false」であれば何もせず、次へ進みます。 

  • (if <condition> <instructionX1>...<instructionXN> else <instructionY1>...<instructionYN>)
 <condition>が「true」であるかどうかを判定し、「true」であれば<instructionX1>~<instructionXN>を実行して、次へ進みます。
 「false」であれば<instructionY1>~<instructionYN>を実行して、次へ進みます。



(game
 (piece
  (moves
   (
    (if empty? add)
    (if (on-board? n) n add)
   )
  )
 )
)
※現在の位置が空であれば「add」します。
 さらに、(現在の位置が空であってもなくても)上が盤上であれば、上に進んで「add」します。


(game
 (piece
  (moves
   (
    (if (on-board? n) n add)
    (if empty? add)
   )
  )
 )
)
※上が盤上であれば、上に進んで「add」します。
 さらに、現在の位置が空であれば「add」します。
  上が盤上でない場合、現在の位置(進む前の位置)が空であれば「add」します。
  上が盤上の場合、現在の位置(上に進んだ位置)が空であれば「add」します。


(game
 (piece
  (moves
   (
    (if empty?
     add
    else (on-board? n)
     n add
    )
   )
  )
 )
)
※現在の位置が空であれば「add」します。
 現在の位置が空でなければ、上が盤上であれば、上に進んで「add」します。


(game
 (piece
  (moves
   (
    (if (on-board? n)
     n add
    else empty?
     add
    )
   )
  )
 )
)
※上が盤上であれば、上に進んで「add」します。
 上が盤上でなければ、現在の位置が空であれば「add」します。

③と④は全く並列なので、同じ結果となります。
①と②は直列なので、連続処理の際に、別の結果となります。


  • verify
 条件判定の際に使用します。
 判定に満たない場合は、それ以降の移動処理を中止します。

  • (verify <condition>)
 <condition>が「true」であるかどうかを判定します。
 「true」であれば次へ進み、「false」であればそこで即終了します。

※(verify false)
 処理をそこで終了します。
 最初の「add」の実行前であれば、移動自体がキャンセルされ、着手可能な移動は生成されません。
 「add」の実行後であれば、それ以降の「add」はキャンセルされますが、それ以前の移動は着手可能です。


(game
 (piece
  (moves
   (
    (verify empty?)
    add
    (if (on-board? n) n add)
   )
  )
 )
)
※現在の位置が空であれば「add」します。
 さらに、上が盤上であれば、上に進んで「add」します。
 現在の位置が空でなければ、「add」せずに終了します。


(game
 (piece
  (moves
   (
    (verify (on-board? n))
    n add
    (if empty? add)
   )
  )
 )
)
※上が盤上であれば、上に進んで「add」します。
 さらに、現在の位置(上に進んだ位置)が空であれば「add」します。
 上が盤上でなければ、「add」せずに終了します。

※verifyでは、ifと違って、条件がfalseだった場合、それ以下の処理がキャンセルされ実行されません。


(verify (条件文) )
命令文


(if (条件文)
  命令文
 else
  (verify false)
)

 ①と②は同じ挙動をします。
 移動ブロックの途中で、強制的にその移動をキャンセルしたい場合、「(verify false)」を記載します。




最終更新:2020年09月16日 15:47