2019-10-05に更新

Rustの並列処理を学ぼうぜ☆(^~^)?<その8>

読了目安:12分

<前回の記事>

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ラムダ計算 を特集する☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 寝てればいいのに……☆」

(λx.x) 2

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 この 適用(application) は?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ベータ簡約(β-redex) するだけじゃないの?」

= (λx.x) 2
  (λ .x) 2
    ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 実引数xを消して、」

= (λx.x) 2
  (λ .x) 2
  (λ .2)
      ^  ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 アブストラクションのxを 2 に置き換えて、」

= (λx.x) 2
  (λ .x) 2
  (λ .2)
=     2
  ^^ ^ ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 丸かっこと λと .を消して、2よ」

KIFUWARABE_80x100x8_01_Futu.gif
「 I Combinator なんか計算しても おもんないぜ☆」

(λxy.x) 2 7

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 じゃあ、この適用は?」

= (λxy.x) 2 7
  (λ y.2)   7
    ^  ^  ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ベータ簡約で x を消して、」

= (λxy.x) 2 7
  (λ y.2)   7
  (λ  .2)
     ^      ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 y は束縛されてないから 7 と一緒に消えて、」

= (λxy.x) 2 7
  (λ y.2)   7
  (λ  .2)
=      2
  ^^  ^ ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 丸かっこと λと .を消して、2よ」

(λxy.x) (λy.y+1) 5

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 じゃあ、この適用は?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 y が 衝突(collision) しそうだから、α変換しましょう」

= (λxy.x) (λy.y+1) 5
  (λxy.x) (λz.z+1) 5
            ^ ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑ 片方の y を z に α変換 して……」

= (λxy.      x ) (λy.y+1) 5
  (λxy.      x ) (λz.z+1) 5
  (λ y.(λz.z+1))          5
    ^  ^^^^^^^^  ^^^^^^^^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑左結合だから ここが先に β簡約」

= (λxy.      x ) (λy.y+1) 5
  (λxy.      x ) (λz.z+1) 5
  (λ y.(λz.z+1))          5
  (λ  .(λz.z+1))
     ^                    ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑もう1回 β簡約。yはどこにも使われていないから 5 と一緒に消えるだけね」

= (λxy .      x ) (λy.y+1) 5
  (λxy .      x ) (λz.z+1) 5
  (λ y .(λz.z+1))          5
  (λ   .(λz.z+1))
= (λ      z.z+1 )
       ^^^     ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑実引数が空っぽの (λ .) が1個浮いているから消しちゃいましょう」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 これ以上 β簡約 できないから、 ベータ正規形(beta normal form) よ」

KIFUWARABE_80x100x8_01_Futu.gif
「 仮引数 z を消すには、実引数が 1個 足りなかったな☆
設問を作ったやつが あんぽんたん だったんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 そうだったのかだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 まあ、実引数を付ければ それが +1 されるだろう☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 K Combinator なんか計算しても おもんないぜ☆」

(λxyz.xz(yz)) (λx.x+1) (λy.y-1) 3 5 7

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 じゃあ、この適用は?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 x と y が 衝突(collision) しまくりそうだから、α変換しましょう」

= (λxyz.xz(yz)) (λx.x+1) (λy.y-1) 3 5 7
= (λxyz.xz(yz)) (λv.v+1) (λw.w-1) 3 5 7
                  ^ ^      ^ ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 片方の x を v に、 片方の y を w に α変換 して……」

= (λxyz.       xz(yz)) (λx.x+1) (λy.y-1) 3 5 7
= (λxyz.       xz(yz)) (λv.v+1) (λw.w-1) 3 5 7
= (λ yz.(λv.v+1)z(yz))          (λw.w-1) 3 5 7
    ^   ^^^^^^^^       ^^^^^^^^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑左結合だから 最初に x が β簡約」

= (λxyz.       xz(       yz)) (λx.x+1) (λy.y-1) 3 5 7
= (λxyz.       xz(       yz)) (λv.v+1) (λw.w-1) 3 5 7
= (λ yz.(λv.v+1)z(       yz))          (λw.w-1) 3 5 7
= (λ  z.(λv.v+1)z((λw.w-1)z))                   3 5 7
     ^  ^^^^^^^^  ^^^^^^^^             ^^^^^^^^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑左結合だから 次に y が β簡約」

= (λxyz.       xz(       yz)) (λx.x+1) (λy.y-1) 3 5 7
= (λxyz.       xz(       yz)) (λv.v+1) (λw.w-1) 3 5 7
= (λ yz.(λv.v+1)z(       yz))          (λw.w-1) 3 5 7
= (λ  z.(λv.v+1)z((λw.w-1)z))                   3 5 7
  (λ   .(λv.v+1)3((λw.w-1)3))                     5 7
      ^         ^         ^                     ^
=       (λv.v+1)3((λw.w-1)3)                      5 7
  ^^   ^                    ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑次に z が β簡約。
実引数が空っぽになったから ラムダ式 が1個消えるわよ」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 左結合だから 次に消える実引数は v かしらねぇ?」

= (λxyz.       xz(       yz)) (λx.x+1) (λy.y-1) 3 5 7
= (λxyz.       xz(       yz)) (λv.v+1) (λw.w-1) 3 5 7
= (λ yz.(λv.v+1)z(       yz))          (λw.w-1) 3 5 7
= (λ  z.(λv.v+1)z((λw.w-1)z))                   3 5 7
  (λ   .(λv.v+1)3((λw.w-1)3))                     5 7
=       (λv.v+1)3((λw.w-1)3)                      5 7
=       (λ .3+1) ((λw.w-1)3)                      5 7
          ^ ^   ^
=       (λ .  4) ((λw.w-1)3)                      5 7
=             4  ((λw.w-1)3)                      5 7

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑次に v を β簡約。
あらっ、ラムダ式が消えて 4 になったわよ? 左結合できないんじゃないの?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 あれま☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 設問したやつが あんぽんたん だったんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 そうだったのかだぜ☆」

(λxyz.xz(yz)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 じゃあ これでやり直しで☆ × は x と見間違えるので * とするぜ☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 x と y と z が 衝突(collision) しまくりそうだから、α変換しましょう」

= (λxyz.xz(yz)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.xz(yz)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
                  ^ ^      ^ ^      ^ ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 片方の x を u に、 片方の y を v に、 片方の z を w に α変換 して……」

= (λxyz.       xz(yz)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.       xz(yz)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.u+1)z(yz))          (λv.v-1) (λw.w*2) 5 7
    ^   ^^^^^^^^       ^^^^^^^^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑左結合だから 最初に x が β簡約」

= (λxyz.       xz(       yz)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.       xz(       yz)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.u+1)z(       yz))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.u+1)z((λv.v-1)z))                   (λw.w*2) 5 7
     ^            ^^^^^^^^             ^^^^^^^^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑次に y が β簡約」

= (λxyz.       x       z(       y       z)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.       x       z(       y       z)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.u+1)       z(       y       z))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.u+1)       z((λv.v-1)       z))                   (λw.w*2) 5 7
  (λ   .(λu.u+1)(λw.w*2)((λv.v-1)(λw.w*2)))                            5 7
      ^         ^^^^^^^^         ^^^^^^^^                     ^^^^^^^^
=       (λu.u+1)(λw.w*2)((λv.v-1)(λw.w*2))                             5 7
  ^^   ^                                  ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑次に z が β簡約。
実引数が無くなったから ラムダ式が1個消えるわよ」

= (λxyz.              x       z(       y       z)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.              x       z(       y       z)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.      u +1)       z(       y       z))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.      u +1)       z((λv.v-1)       z))                   (λw.w*2) 5 7
  (λ   .(λu.      u +1)(λw.w*2)((λv.v-1)(λw.w*2)))                            5 7
=       (λu.      u +1)(λw.w*2)((λv.v-1)(λw.w*2))                             5 7
        (λ .(λw.w*2)+1)        ((λv.v-1)(λw.w*2))                             5 7
          ^ ^^^^^^^^   ^^^^^^^^
=           (λw.w*2)+1         ((λv.v-1)(λw.w*2))                             5 7
        ^^ ^          ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑左結合だから とりあえず 次に u を β簡約 しましょう。
実引数が無くなったから ラムダ式が1個消えるわよ」

KIFUWARABE_80x100x8_01_Futu.gif
「 +1 が飛び出た☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 なんで飛び出たんだぜ☆?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 じゃあ 飛び出なけりゃいいんでしょ」

= (λxyz.              x       z(       y       z)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.              x       z(       y       z)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.      u +1)       z(       y       z))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.      u +1)       z((λv.v-1)       z))                   (λw.w*2) 5 7
  (λ   .(λu.      u +1)(λw.w*2)((λv.v-1)(λw.w*2)))                            5 7
=       (λu.      u +1)(λw.w*2)((λv.v-1)(λw.w*2))                             5 7
        (λ .(λw.w*2)+1)        ((λv.v-1)(λw.w*2))                             5 7
            (λw.w*2)+1         ((λv.v-1)(λw.w*2))                             5 7
=           (λw.w*2 +1)        ((λv.v-1)(λw.w*2))                             5 7
                   ^  ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 アブストラクション が丸かっこの中に入るようにしましょう」

KIFUWARABE_80x100x8_01_Futu.gif
「 適当だな☆」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 あらっ?! w が collision しそうな気がするけど。 どこで分裂したのかしら?」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 z が2つあったのねぇ」

= (λxyz.              x       z(       y       z)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.              x       z(       y       z)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.      u +1)       z(       y       z))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.      u +1)       z((λv.v-1)       z))                   (λw.w*2) 5 7
  (λ   .(λu.      u +1)(λw.w*2)((λv.v-1)(λw.w*2)))                            5 7
=       (λu.      u +1)(λw.w*2)((λv.v-1)(λw.w*2))                             5 7
        (λ .(λw.w*2)+1)        ((λv.v-1)(λw.w*2))                             5 7
            (λw.w*2)+1         ((λv.v-1)(λw.w*2))                             5 7
=           (λw.w*2 +1)        ((λv.v-1)(λw.w*2))                             5 7
=           (λw.w*2 +1)        ((λv.v-1)(λt.t*2))                             5 7
                                          ^ ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑片方の w は t に α変換 しましょう」

= (λxyz.                               x       z(       y       z)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.                               x       z(       y       z)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.                       u +1)       z(       y       z))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.                       u +1)       z((λv.v-1)       z))                   (λw.w*2) 5 7
  (λ   .(λu.                       u +1)(λw.w*2)((λv.v-1)(λw.w*2)))                            5 7
=       (λu.                       u +1)(λw.w*2)((λv.v-1)(λw.w*2))                             5 7
        (λ .(λw.                 w*2)+1)        ((λv.v-1)(λw.w*2))                             5 7
            (λw.                 w*2)+1         ((λv.v-1)(λw.w*2))                             5 7
=           (λw.                 w*2 +1)        ((λv.v-1)(λw.w*2))                             5 7
=           (λw.                 w*2 +1)        ((λv.v-1)(λt.t*2))                             5 7
            (λ .((λv.v-1)(λt.t*2))*2 +1)                                                       5 7
              ^ ^^^^^^^^^^^^^^^^^^              ^^^^^^^^^^^^^^^^^^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑左結合だから 次は w を β簡約 しましょう」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 豪快にいったなご主人☆」

= (λxyz.                               x       z(       y       z)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.                               x       z(       y       z)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.                       u +1)       z(       y       z))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.                       u +1)       z((λv.v-1)       z))                   (λw.w*2) 5 7
  (λ   .(λu.                       u +1)(λw.w*2)((λv.v-1)(λw.w*2)))                            5 7
=       (λu.                       u +1)(λw.w*2)((λv.v-1)(λw.w*2))                             5 7
        (λ .(λw.                 w*2)+1)        ((λv.v-1)(λw.w*2))                             5 7
            (λw.                 w*2)+1         ((λv.v-1)(λw.w*2))                             5 7
=           (λw.                 w*2 +1)        ((λv.v-1)(λw.w*2))                             5 7
=           (λw.                 w*2 +1)        ((λv.v-1)(λt.t*2))                             5 7
            (λ .((λv.v-1)(λt.t*2))*2 +1)                                                       5 7
                ((λv.v-1)(λt.t*2))*2 +1                                                        5 7
            ^^ ^                       ^
?              (((λv.v-1)(λt.t*2))*2 +1)                                                       5 7
               ^                       ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑ 仮引数の無くなった (λ.) を消そうにも、+1 が飛び出て うまく収まんないわねぇ」

KIFUWARABE_80x100x8_01_Futu.gif
「 丸かっこの内側のラムダ式の アブストラクション と うまく くっつかないかだぜ☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 手順前後だったのでは☆ どんな手順に入れ替えてもいいのが チャーチ・ロッサー性 なのに……☆」

= (λxyz.                                 x       z(       y       z)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.                                 x       z(       y       z)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.                         u +1)       z(       y       z))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.                         u +1)       z((λv.v-1)       z))                   (λw.w*2) 5 7
  (λ   .(λu.                         u +1)(λw.w*2)((λv.v-1)(λw.w*2)))                            5 7
=       (λu.                         u +1)(λw.w*2)((λv.v-1)(λw.w*2))                             5 7
        (λ .(λw.                   w*2)+1)        ((λv.v-1)(λw.w*2))                             5 7
            (λw.                   w*2)+1         ((λv.v-1)(λw.w*2))                             5 7
=           (λw.                   w*2 +1)        ((λv.v-1)(λw.w*2))                             5 7
=           (λw.                   w*2 +1)        ((λv.v-1)(λt.t*2))                             5 7
            (λ .((λv.         v-1)(λt.t*2))*2 +1)                                                5 7
                ((λv.         v-1)(λt.t*2))*2 +1                                                 5 7
?              (((λv.         v-1)(λt.t*2))*2 +1)                                                5 7
               (((λ .(λt.  t*2)-1)        )*2 +1)                                                5 7
                   ^ ^^^^^^^^^^   ^^^^^^^^
=                    (λt.((t*2 -1)         *2 +1))                                               5 7
               ^^^^ ^    ^^   ^           ^      ^

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑ v を β簡約 しましょう。
かっこをうまく動かせないわねぇ」

KIFUWARABE_80x100x8_01_Futu.gif
「 かなり うさんくさく かっこ を移動したりしていたが、まあいいだろう見逃そう☆」

= (λxyz.                                 x       z(       y       z)) (λx.x+1) (λy.y-1) (λz.z*2) 5 7
= (λxyz.                                 x       z(       y       z)) (λu.u+1) (λv.v-1) (λw.w*2) 5 7
= (λ yz.(λu.                         u +1)       z(       y       z))          (λv.v-1) (λw.w*2) 5 7
= (λ  z.(λu.                         u +1)       z((λv.v-1)       z))                   (λw.w*2) 5 7
  (λ   .(λu.                         u +1)(λw.w*2)((λv.v-1)(λw.w*2)))                            5 7
=       (λu.                         u +1)(λw.w*2)((λv.v-1)(λw.w*2))                             5 7
        (λ .(λw.                   w*2)+1)        ((λv.v-1)(λw.w*2))                             5 7
            (λw.                   w*2)+1         ((λv.v-1)(λw.w*2))                             5 7
=           (λw.                   w*2 +1)        ((λv.v-1)(λw.w*2))                             5 7
=           (λw.                   w*2 +1)        ((λv.v-1)(λt.t*2))                             5 7
            (λ .((λv.         v-1)(λt.t*2))*2 +1)                                                5 7
                ((λv.         v-1)(λt.t*2))*2 +1                                                 5 7
?              (((λv.         v-1)(λt.t*2))*2 +1)                                                5 7
               (((λ .(λt.  t*2)-1)        )*2 +1)                                                5 7
=                    (λt.((t*2 -1)         *2 +1))                                               5 7
                     (λ .((5*2 -1)         *2 +1))                                                 7
                       ^   ^                                                                     ^
                     (λ .((     9)         *2 +1))                                                 7
                     (λ .                     19 )                                                 7
?                                             19                                                   7

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 ↑ t を β簡約 しましょう」

OKAZAKI_Yumemi_80x80x8_02_Syaberu.gif
「 19 と 7 が残ったんだけど」

KIFUWARABE_80x100x8_01_Futu.gif
「 設問を作ったやつが あんぽんたん だったんだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 そうだったのかだぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 実引数は いくつだったら いいんだぜ☆?」

(λxyz.xz(yz))

KIFUWARABE_80x100x8_01_Futu.gif
「 一番左に 仮引数を3つもった ラムダ式があるということは……☆」

(λxyz.xz(yz)) u v w

KIFUWARABE_80x100x8_01_Futu.gif
「 x、y、zに対応する実引数 u、v、w と……☆」

(λxyz.xz(yz)) u v w 7

KIFUWARABE_80x100x8_01_Futu.gif
「 ナンバーが何か1個 要るんじゃないか☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 そうなのかだぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 S Combinator なんか計算しても おもんないぜ☆」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 さっきの式の答えは ほんとうに 19 なのか検算しておくかだぜ☆」

(λxyz.xz(yz)) (λx.x+1) (λy.y-1) (λz.z*2) 5

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑こういう形にすればよかったのかだぜ☆」

= (λxyz.xz(yz)) (λx.       x+1) (λy.       y-1) (λz.z*2) 5
? (λxy .x (y )) (λ .(λz.z*2)+1) (λ .(λz.z*2)-1)          5
      ^  ^  ^     ^ ^^^^^^^^      ^ ^^^^^^^^    ^^^^^^^^
  (λxy .x (y )) (λ    z.z*2 +1) (λ    z.z*2 -1)          5
                   ^^^     ^       ^^^     ^

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑計算順序を無視して z を先に消してみるぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 また そういう 基礎を疎かにした 手抜きをする……☆」

= (λxyz.xz(yz)) (λx.                 x+1) (λy.       y-1) (λz.z*2) 5
? (λxy .x (y )) (λ .(λz.z          *2)+1) (λ .(λz.z*2)-1)          5
  (λxy .x (y )) (λ    z.z          *2 +1) (λ    z.z*2 -1)          5
? (λx  .x     ) (λ     .(λz.z*2 -1)*2 +1)                          5
     ^    ^^^^        ^ ^^^^^^^^^^^       ^^^^^^^^^^^^^^^

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑計算順序を無視して y を先に消してみるぜ☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 またまた 自分流でやられると、目が追い付いていかないぜ☆」

= (λxyz.xz(yz)) (λx.                  x+1) (λy.       y-1) (λz.z*2) 5
? (λxy .x (y )) (λ .(λ    z. z      *2)+1) (λ .(λz.z*2)-1)          5
  (λxy .x (y )) (λ        z. z      *2 +1) (λ    z.z*2 -1)          5
? (λx  .x     ) (λ     .(λz. z*2 -1)*2 +1)                          5
?               (λ     .(λz. z*2 -1)*2 +1)                          5
                (λ        z.(z*2 -1)*2 +1)                          5
  ^^^^^^^^^^^^^        ^^^  ^

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑計算順序を無視して (λx.x) を消してしまおうぜ☆ 丸かっこも整理☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 またまたまた そういう 勝手なことをする……☆」

= (λxyz.xz(yz)) (λx.                  x+1) (λy.       y-1) (λz.z*2) 5
? (λxy .x (y )) (λ .(λ    z. z      *2)+1) (λ .(λz.z*2)-1)          5
  (λxy .x (y )) (λ        z. z      *2 +1) (λ    z.z*2 -1)          5
? (λx  .x     ) (λ     .(λz. z*2 -1)*2 +1)                          5
?               (λ     .(λz. z*2 -1)*2 +1)                          5
                (λ        z.(z*2 -1)*2 +1)                          5
?               (λ         .(5*2 -1)*2 +1)
                          ^  ^                                      ^
                (λ         .(     9)*2 +1)
                (λ         .           19)
                                       19 

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 ↑zに5を入れてみようぜ☆
19 になってそうだけどな☆」

KIFUWARABE_80x100x8_01_Futu.gif
「 しかし 計算順序を ぐちゃぐちゃ にして出したものは 答えと言えるのか……☆?」

KITASHIRAKAWA_Chiyuri_80x100x8_01_Futu.gif
「 計算順序を ぐちゃぐちゃ にしても 結果が合流するのが 強味なんだけどな☆」

<次の記事へ>

ツイッターでシェア
みんなに共有、忘れないようにメモ

むずでょ

光速のアカウント凍結されちゃったんで……。ゲームプログラムを独習中なんだぜ☆電王戦IIに出た棋士もコンピューターもみんな好きだぜ☆▲(パソコン将棋)WCSC29一次予選36位、SDT5予選42位▲(パソコン囲碁)AI竜星戦予選16位

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント