コラッツ予想がとけたらいいな2

自分の考察を書いていきます。

CPL

CPL で Stateモナド

CPL

CPL で Stateモナド を作ってみた。ちゃんと出来てるかどうかは分からない。 参考記事 圏論プログラミング言語CPL入門 - うさぎ小屋 コード # State Monad # newtype State s a = State { runState :: s -> (s, a) } right object State(S, A) with state is…

CPLの練習 その4(divmod)

CPL

divmodがやっと理解できたので、書く。 定義 let divmod = ev.pair( pr( cur(pair(o.!, pi1).pi2), cur( ev.pair( if( cur(pair(s.pi1.pi1, sub.pair(pi2.pi1, pi2.pi2)).pi2), cur(pi1 .pi2) ).ge.pair(pi2.pi1, pi2.pi2), I ).pair(ev, pi2) ) ).s.pi1, I …

CPLの練習 その3(加算と乗算)

CPL

前回 別の方法を考えた。 # 加算4 let add4(x, y) = pr(y, s).x; # 乗算 let mul(x, y) = pr(o, pr(y, s)).x; なんだ~letで定義する関数?に、引数設定できるんじゃん。 ちなみに今回作った加算と乗算は、第一引数xなら外から渡せる。 cpl> simp mul(pi1, s.…

CPLの練習 その2(加算)

CPL

前回 今回は加算をやろうと思う。 ネットで見たところ、少なくとも3つの定義があった。 # 加算1 let add1 = ev.prod(pr(cur(pi2), cur(s.ev)), nat); # 加算2 let add2 = ev.prod(pr(cur(pi2), exp(s, I)), I); # 加算3 let add3 = ev.pair(pr(cur(pi2), cur…

CPLの練習(pred)

CPL

圏論プログラミング言語CPLをやってみようと思う。 言語の説明は参考記事にまかせます。 まあ、Esotericな言語です。 参考記事 インストールだけど、 GitHubからクローンして、stack run cplが良いと思う。 (2回目からはexeを直接叩く) cabalコマンドは使…