見掛け倒し命†実際には大したことはない。 括弧の関係が見やすくなっただけ。 里々の内部関数nop内では改行が無視されることを生かしているが、 基本形†@関数名 (nop, 【タブ】(if,条件式 【タブ】【タブ】,条件式真の時返す値 【タブ】【タブ】,条件式偽の時返す値 【タブ】) 【タブ】( 【タブ】【タブ】(if,条件式 【タブ】【タブ】【タブ】,if内で実行されたくない括弧の中身→例「set(spritf,%c,1)変数(spritf,%c,1)1」 【タブ】【タブ】) 【タブ】) )(ifで返す値を表示するかしないか)(callの引数つき再帰呼び出し)(変数の削除) 気をつけること†タブの代わりに半角スペースはアウト ifないのsetは勝手に実行されてしまうので二次引数区切(命名)を使って実行を遅らせる 最後に変数の削除が行なわれるので(変数「」の存在)を条件式に使うのは危険 if文†里々では内部の括弧から実行されていくので (nop, (if,条件式 ,(set,変数,0) ) ) このとき、条件式が偽でもsetが実行されてしまう。 そのため、 (nop, ( (if,条件式 ,set ,nop ) ,変数,0) ) こうしてsetの実行を遅らせる必要がある。 また、引数区切りを複数使うことで (nop, ( (if,条件式 ,set(sprintf,%c,1)変数1(sprintf,%c,1)0 ,set(sprintf,%c,1)変数2(sprintf,%c,1)5 ) ) ) としてしまうことも出来る。 for文†* 1+1+1+1は(call,関数1,4) @関数1 (nop, (set,結果, (calc, (if,(変数「結果」の存在)==1 ,(結果) ,0 )+1 ) ) )(if,(結果)==(A0),(結果))((if,(結果)==(A0),nop,call),関数1,(A0))(set,結果,) 0+1+1+1+1・・・を繰り返す。 通常とは違うif文と、再帰呼び出しのみのループをどう使いこなすかが鍵となりそう 今思えば(nop)最終行の処理として、(返す値の表示)(ループの為のcall)(変数の初期化)の順番が最適かも。 サンプル†「里々でループ処理」で作ったやつの強化改造&見栄え向上版。 ※これは実験的に作ったので上記の構文になっていない。 (call,格納関数,前半文字列,変数の初期値,後半文字列,変数の増加量,変数の最大値,区切) (R*)や(FMO*name)などの連番の引数の参照 ちなみにsplitの(S*)はis_emptyで存在判定できない。 例えば、FMOから起動中のゴースト一覧を得るとき。 * $引数区切り追加 (B5) :現在デスクトップ上にいるゴーストは「(call,格納関数,FMO,0,name,1,3,、)」だよ。 @格納関数 (nop, (set,_count, ( (if,(変数「_count」の存在)==1 ,calc(B5)(_count)+(A3) ,calc(B5)(A1)+0 ) ) ) (set,_memory, ( (A0) ( (if,(compare,(A0),FMO)==1 ,zen2han(B5)(_count) ,han2zen(B5)(_count) ) ) (A2) ) ) (set,_result, (if,(変数「_result」の存在)==1 ,(_result) (if,(変数「_memory」の存在)==1 ,(A5)(_memory) ) ,(if,(変数「_memory」の存在)==1 ,(_memory) ) ) ) )(if,(変数「_memory」の存在)==0,(_result),(if,(_count)>=(A4),(_result)))(nop, (set,_memory ,(if,(_count)>=(A4) ,set ,(if,(変数「_memory」の存在)==0 ,set ,nop ) ) ) )((if,(compare,(_memory),nop)==1,call,nop)(B5)格納関数(B5)(A0)(B5)(A1)(B5)(A2)(B5)(A3)(B5)(A4)(B5)(A5))((_memory),_count,)((_memory),_result,) #これでも一行として認識される、即ち「格納関数」の単語数は1つとなる。 #引数区切にバイト値5を使っているのは趣味です(ぇ @B5 (sprintf,%c,5) この時下のように喋る。 現在デスクトップ上にいるゴーストは「ポスト、さくら、ふたば、エミリィ」だよ。 他にも *installedghostname $引数区切り追加 (B5) $インストールされているゴーストの数 (call,格納関数,R,0,,1,99,〓) @B5 (sprintf,%c,5) とかでも使える。 このときは(R99)又は引数がなくなるまでまで読み込んで $インストールされているゴーストの数=さくら〓ふたば〓(略)〓エミリ みたいになる ハズ。 |