Alabica: 構文
大分空いてしまったけど自分用のメモなので忘れきる前にやったとこまで書きたいと思います。
書いてて思うけど、用語がちゃんと決まってないのでなんかふわふわしてるな。
前回、制御構文は前に出す方針だと書きましたが、具体的には下記のものを前に出しました。
条件構文
if/when/unless
ループ構文
while/each/for
関数、マクロ定義
def/defmacro
- if/when/unless
- bool if [trueの時実行される] [falseの時実行される]
- bool when [trueの時実行される]
- bool unless [falseの時実行される]
>>> true if ["ok"] ["ng"] print ok
- while/each/for
- bool while []
- list each []
- 開始 終了 間隔 for []
>>> true while ["loop" print] loop loop …
このままだと無限ループになるので条件文等で脱出する必要があります。
breakコマンドはありません。
whileは常にスタック先頭の値を評価するので、ループを終了したい時にはスタックにfalseを積みます。 >>> true while ["loop" print false] loop
とすると一回で終了です。 listは初めてでてきましたが、Pythonのリストと同じで、実はquoteと同じものです。
>>> [1 3 5] each [print] 1 3 5
eachはリストの要素を順にスタックに積んで行きます。
>>> [1 3 5] each [as $i $i 10 + print] 11 13 15
みたいに変数に受けて使うこともできます。
forは開始、終了、間隔を指定し、順にスタックに積んで行きます。
>>> 5 10 2 for [print] 5 7 9
今日はここまで。関数の話が残っちゃったけど、次回に廻しします。
Trackback
please send trackback to:
http://sh1.2-d.jp/b/trackback/2009-10-06-09-23

