Hatena::ブログ(Diary)

aikeの日記 RSSフィード

2008-10-12 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。

名無し名無し 2011/08/23 11:05 ワロタwvWWwwwwwwwwwww

トラックバック - http://d.hatena.ne.jp/aike/20081012