Grass言語難しすぎWWWワロタWWWWWW
うはwwWWwWWWwvwwWWwWWWwWWWW。
マイナーwvなプログラミング言語wwwいろいろ調べてたらちょっと草植えときますね型言語 GrasswWWWwwWなんての見つけたwwWWWWWWwwwwWww。
これはひどいvwwwWWw。というかすごいWWWW。
なにしろ使う文字が「w」と「v」と「W」しかないWwwwwW。超簡単wwwwWWWwwwwww。
でもやってみるとすげー難しいWwwwwwwWwww。難しすぎwwwwWWWWWWwwW。
ぜんぜん歯が立たないwwwwwwwwww。Hello World!さえ書けないWWWWWWWW。
でもくやしいので勉強してみるwWwwwwwww。うはWWWWWWWWWWW、前向きwWww。
それにしても、これが累乗wwwwを表すとかWWWWWWWWWWWWW、まじありえなくない?wwwww
wwWww
もうなんていうかwwwwww、ごめんなさいWWWWWWWWWWWWWWW。いきなり撃沈ww。
なんかねwwwwwwwwwwWwwvw、ラムダ計算WWWWWWWWとかWWW、チャーチ数WWWWWWとか、分かってないと書けないみたいWWWWWwvWWwWwwwwwww。見た目と違って異常に理論的wwwwwwwwww。
それでもうはwww Mosh で Grass 実装したwwww - ひげぽん OSとか作っちゃうかMona-とかじっくり読んでいくとWWWwWWWWなんとか理解できるかもwWWWWWwWWWWWWwWWWWWWWwWWW。
ううむWWWWWwWWWWWWWWWw。
SUCC := λn f x. f (n f x)とかWWWWWWWWWWw難しいなーWWWWWWWWWWWwWWWWWWWWWWW。
これはWwWWWそうとうWWWWWWWW本気出さないとWWwWWWWWWWWWW理解できそうもないWWWWwWWWWWWWWWWWWWWWWWWW。
LispでGrass解説 (俺専用) - * *scrap*もかなり分かりやすいWwwwwwwwwwwwwwwwvw。
CommonLispの知識前提WWWWWWWWWWWWWWWWWだけどねwvWWwwwwwwwwwwwってwwwwwwwwそれ敷居高いよーwwwwwwwww。
ふむふむ、これがチャーチ数でいうところの3だってwwww。えーwwwww。
wwWWwWWWwWWWWw
λf x. f (f (f x)) とか解説されてるけどWWWWWwWWWWWWw、要はこの「3」WWWWWWWwってやつに関数を放り込むWWWWWWWWと3回実行する関数にしてくれるみたいwWWWWWWWWWw。うはWWWなんか分かってきたWWWWWWWwWWWWWWWWW。意味合い的には「3」てよりWWwWW「3回」ってことなのかWWWWWWWWWW。
さっきからいっぱいw使っててふざけてるWWWWWWWWWように見えるけどWWWWwWW本気だからねWWWWWWWW。まじでWWWWwWWWWW。
それでこのGrass言語ってやつは、文字を出力(OUT)WWWWWWWWWWするか、入力(IN)wWWWWWWWWWWするか、文字コードをインクリメント(SUCC)WWWWWWwWWWWWするか、しか機能がないのだなWWWWWWWWWWWWwWWWW。
でWWWWW、初期状態で与えられている文字WWWWWWWWWが小文字の「w」であるとWWWWWWWW。どんだけWWWWWWWWWWWwWWWWWWWWWWWWWWW。
それ以外の文字WWWWWはSUCCして作れwvw、とWWWWWWWWWWWWWWWWWW。えーめんどくさいWWWWWWWWWWWWWWWWWWWWWWWW。
でラムダ計算WWWWWWWWWWWWWWWWwvWをつかうとIFwwwwwwwwwwwwww文のような構造とかWWwwwWWWw、TRUE/FALSEといったことWWWWwwwwも表現できるんだってwwwwwWWWWWwwwwwww。全然理解できてないけどねwwwwwwwwwwwwwwwwwwwwwWWWWWWwwwwww。
さらに再帰wwwwwwwwwwwwwwwwwwをするにはYコンビネータwwwwだって書けちゃうとかwwwwwwwwwwww。でたなラスボスWWWWWWWw、YコンビネータWWWWWWWW。
これ何回勉強してもwwwwwwwwwwwwwwよくわかんないんだよなーwwwwwwwwwwwwww。
でも関数型言語とかWWWWWWWWWマスターするには避けて通れないっぽいねwwwwwwwwwwwww。
任意の文字を出力するときは、インクリメントする数だけSUCCを書いてもwwwwwwwwいいんだけどWWWWWWWWWW、そこはそれwwwwwwwwwwwwwwwwwwww。チャーチ数WWWWWWWWWWWで数字を作ってそれにSUCCを与えるとwwwwwwwwwwww好きな回数wwwwwwwwwwwwwwwインクリメントする関数ができるWWWWWWWWWWWW。
でもスタート文字が「w」なんで、欲しいのはインクリメントよりもwwwデクリメントなんですけどwwwwwwww。
チャーチ数で大きな数wwwwwwwwwを作るには累乗するのが簡単WWWWWWWWWWWWWwwwww。
4の4乗とかで256WWWWWWWWWWWWWWなんてすぐに作れるwwwwwwwww。
ちょwwwwwwwwwwwwwwwwwwwwwwww、256回SUCCしたら元に戻っちゃうじゃんWWWWWWWWWWWWWWW。だめじゃんwwwwwwwwwww。
しかしなにが一番大変かってwwwwwwwwwwwwwwwwwww関数や適用wwwwwwwwwwwwwwwwwwwwへのアドレス指定がスタックWWWWWWWWWWWWWWWWであるってことwwwwwwwwwwwwwwwwwwwwwww。
つまりスタックWWWWWWWWWWWWWWWWWが積まれるたびにアドレス?wwwwwが増えるwWWWWWWWWWWWWWWWWWW。
うはwwwwwwwwwwwwwww最凶WWWWWWWWWWWWWWWW。
しかもGrassではひとつ操作WWWするたびにスタックがひとつ積まれるwwwwwwwwwwww。なにこれWWWWWWWWWWWWWWWWW。
なのでWWWプログラムの後ろの方wwwになると、スタックの最深部にある「w」とかOUTとかを指定するのにすげーwww長い指定が必要になるwwwwwwwwwwwwwwwwwwwwwwwwwww。
App(21,24) …… 21番目の深さにある関数に24番目の深さにある値を適用
WWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwww
みたいなWWWWWWWWWW。
そんなわけWWWWWWWWWWWWでGrassのプログラムはどんどん伸びるwwwwwwwww伸びるWWWWW。
というわけでWWW、今回Grass言語に挑戦してみましたがWWWWWWWWWWWWWWW、良い子の諸君wwwwwwならお気づきのとおりwwwwwwwwwwwwwwwwwww、このエントリー自体WWWWWWWがGrassのプログラムになっててWWWWWWWWWWWWWWWWWw、実行するとWWWWWWWWWWWWWWW秘密のメッセージが……WWWWWWW。(UTF-8推奨WWW)。
みたいなwwwwww。