<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Grass言語</title><link>http://blogs.wankuma.com/esten/category/2119.aspx</link><description>なぜかいきなりはまったエコな言語ｗ</description><managingEditor>片桐　継（Tugu Katagiri）</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>草を反芻するwWWWwwww</title><link>http://blogs.wankuma.com/esten/archive/2009/02/27/168956.aspx</link><pubDate>Fri, 27 Feb 2009 21:18:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2009/02/27/168956.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/168956.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2009/02/27/168956.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/168956.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/168956.aspx</trackback:ping><description>&lt;p&gt;少ない脳みそで、論理的にGrassを考えてみる。ラムダとかチャーチとか、まだ判んないorz&lt;br&gt;わかんないなりに、がんばってみたメモ &lt;p&gt;お題はこれ&lt;br&gt;&lt;font color="#008000"&gt;wwWWwWWWwvWwwwWwwwwwWWWWw&lt;/font&gt;  &lt;p&gt;まずは、vで分ける  &lt;p&gt;&lt;font color="#008000"&gt;(1)wwWWwWWWw&lt;br&gt;(2)WwwwWwwwwwWWWWw&lt;/font&gt;  &lt;p&gt;(2)は[W]で始まるからメインルーチンなので後で  &lt;hr&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;(1)から解析を開始&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;最初が &lt;font color="#008000"&gt;ww&lt;/font&gt; だから  &lt;p&gt;定義関数は&lt;font color="#800080"&gt;&lt;strong&gt;Func1(arg1,arg2)&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;開始時の初期スタックは&lt;br&gt;&lt;font color="#800080"&gt;&lt;strong&gt;Arg1-Arg2-OUT-Succ-[w]-IN&lt;/strong&gt; &lt;/font&gt; &lt;p&gt;１つ目のペア&lt;font color="#008000"&gt;WWw&lt;/font&gt; &lt;p&gt;処理式は &lt;font color="#800080"&gt;&lt;strong&gt;Arg2(Arg1)&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;スタックに積む  &lt;p&gt;&lt;strong&gt;&lt;font color="#800080"&gt;Arg2(Arg1)-Arg1-Arg2-OUT-Succ-[w]-IN&lt;/font&gt; &lt;/strong&gt; &lt;p&gt;２つ目のペア&lt;font color="#008000"&gt;WWWw&lt;/font&gt;&lt;br&gt;処理式は &lt;strong&gt;&lt;font color="#800080"&gt;Arg2(Arg2(Arg1))&lt;/font&gt;&lt;/strong&gt;  &lt;p&gt;スタックは &lt;p&gt;&lt;font color="#800080"&gt;&lt;strong&gt;Arg2(Arg2(Arg1))-Arg2(Arg1)-Arg1-Arg2-OUT-Succ-[w]-IN&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;関数定義ここまで。  &lt;p&gt;よって、&lt;font color="#0000ff"&gt;&lt;strong&gt;Func1(Arg1,Arg2) は Arg2(Arg2(Arg1)) という処理をする関数になる&lt;/strong&gt;&lt;/font&gt;  &lt;hr&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;メインプログラム解析開始&lt;/font&gt;&lt;/strong&gt; &lt;p&gt;メインプログラムの前にはユーザー関数が一つ。よって開始時点でのメインプログラム用スタックは  &lt;p&gt;&lt;strong&gt;&lt;font color="#800080"&gt;Arg2(Arg2(Arg1))-OUT-Succ-[w]-IN&lt;/font&gt;&lt;/strong&gt;  &lt;p&gt;このときにメインプログラムは&lt;br&gt;&lt;font color="#008000"&gt;WwwwWwwwwwWWWWw&lt;/font&gt;  &lt;p&gt;１つ目のペア&lt;font color="#008000"&gt;Wwww&lt;/font&gt;&lt;br&gt;スタック１の処理式は&lt;font color="#800080"&gt;ユーザー関数 Arg2(Arg2(Arg1)) なのでアドレスに (Succ) をスタック&lt;/font&gt;  &lt;p&gt;よって、メインプログラム用スタックは  &lt;p&gt;&lt;strong&gt;&lt;font color="#800080"&gt;Arg2(Arg2(Arg1))(Succ)-Arg2(Arg2(Arg1))-OUT-Succ-[w]-IN&lt;/font&gt;&lt;/strong&gt;  &lt;p&gt;２つ目のペア&lt;font color="#008000"&gt;Wwwwww&lt;/font&gt;&lt;br&gt;スタック１の処理式は&lt;font color="#800080"&gt;ユーザー関数 Arg2(Arg2(Arg1))(Succ) なのでのアドレスに ([w])をスタック&lt;/font&gt;  &lt;p&gt;よって、メインプログラム用スタックは  &lt;p&gt;&lt;strong&gt;&lt;font color="#800080"&gt;Arg2(Arg2(Arg1))([w])(Succ)-Arg2(Arg2(Arg1))(Succ)-Arg2(Arg2(Arg1))-OUT-Succ-[w]-IN&lt;br&gt;&lt;/font&gt;&lt;/strong&gt;&lt;font color="#800000"&gt;↑ポイントは、スタック式なので、後から渡すほうがArg1になるってところ。&lt;/font&gt;  &lt;p&gt;３つ目のペア&lt;font color="#008000"&gt;WWWWw&lt;/font&gt;&lt;br&gt;スタック４の処理式はOUTだから、&lt;font color="#800080"&gt;OUT(Arg2(Arg2(Arg1))([w])(Succ))&lt;/font&gt;  &lt;p&gt;よって、メインプログラム用スタックは  &lt;p&gt;&lt;font color="#800080"&gt;&lt;strong&gt;OUT(Arg2(Arg2(Arg1))([w])(Succ))-Arg2(Arg2(Arg1))(Succ)([w])-Arg2(Arg2(Arg1))(Succ)-Arg2(Arg2(Arg1))-OUT-Succ-[w]-IN&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;解析はここまで。  &lt;hr&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;で実行処理はスタックの一番上だから&lt;/font&gt;  &lt;p&gt;OUT(Arg2(Arg2(Arg1))([w])(Succ))  &lt;p&gt;OUT(Succ(Succ([w]))  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;→[w](Asciiコード119)の次の次の文字コードを出力→'y'&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/168956.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>草食で食あたり</title><link>http://blogs.wankuma.com/esten/archive/2009/02/26/168884.aspx</link><pubDate>Thu, 26 Feb 2009 22:37:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2009/02/26/168884.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/168884.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2009/02/26/168884.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/168884.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/168884.aspx</trackback:ping><description>&lt;p&gt;もうちょっと頑張ってみたGRASS言語。&lt;br&gt;実はASCII文字出力プログラムだったんだね。計算するんだと思っていたからパニックだった。&lt;br&gt;何をどこにどの文字を出力するのかを制御する言語だとわかるとだいぶ楽になった。  &lt;p&gt;ヒントは、GRASS on AWK&lt;br&gt;&lt;a href="http://blog.livedoor.jp/naoya_t/archives/51026653.html"&gt;http://blog.livedoor.jp/naoya_t/archives/51026653.html&lt;/a&gt; &lt;p&gt;使い慣れていたAWKスクリプトで解析したら、すこし判ってきたｗ&lt;br&gt;といっても、まだ、GRASSソース書けといわれても困るけどｗ  &lt;p&gt;結局、判り辛かったのは数学をやっていなくて、論理しか理解できない超文系人間なので&lt;br&gt;用語がさっぱりワケがわかんなかったのよねｗ  &lt;p&gt;で、ちょっとおさらい＆用語理解を頑張ってみた  &lt;p&gt;&lt;strong&gt;ラムダ式&lt;br&gt;&lt;/strong&gt;&lt;a href="http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97"&gt;http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97&lt;/a&gt; &lt;p&gt;ようするに、なんか引数一個で計算してその答えが必ず一個になる式、ってことらしいｗ&lt;br&gt;１に２たして７だして４ひいて９たす、みたいなのを羅列すると、((((1+2)+7)-4)+9)*2) として計算するってことだよねぇ、きっと。&lt;br&gt;GRASSはこのラムダ式が基本みたいで、ある計算をする→その答えを引数にしてまた計算する→その答えを引数にしてまた計算する、を繰り返すらしいｗｗ&lt;br&gt;この計算、という表現がクセモノで、実はGRASSの場合にはこれが文字コードだったってことだけどorz  &lt;p&gt;&lt;strong&gt;プリミティブ &lt;/strong&gt; &lt;p&gt;これも用語も意味も用法も判らなかった。&lt;br&gt;色々とあさった結果、行末もしくはｖでまずは切り、その単語の中の草の数と並びで、「何をどうするか」が決まり、その規則をあらわしているらしいっぽい。&lt;br&gt;一番判らなかったのは、そこが前提条件って部分 &lt;p&gt;悩みつつも、そこはここを読んで少し理解したｗ&lt;br&gt;&lt;a href="http://www.ueda.info.waseda.ac.jp/~ohtani/wiki/index.php?Grass"&gt;http://www.ueda.info.waseda.ac.jp/~ohtani/wiki/index.php?Grass&lt;/a&gt; &lt;p&gt;で、やってみようかな。少しずつ。  &lt;p&gt;まずはこのソース。  &lt;p&gt;&lt;font color="#008000"&gt;wWWwwww &lt;/font&gt; &lt;p&gt;とすると、これをまずは分解。  &lt;p&gt;&lt;font color="#008000"&gt;w&lt;br&gt;WW&lt;br&gt;wwww&lt;/font&gt;  &lt;p&gt;最初は引数をあらわすので、１個から「引数は１個」だから、プリミティブにあてはめて、  &lt;p&gt;引数-Output標準出力-次の文字コード-「w」-InputArg  &lt;p&gt;になって、２番目が２個だから「Output標準出力」、３番目が４個だからスタックの４番目、となる  &lt;p&gt;命令は、&lt;font color="#000080"&gt;（（スタック４番目）Output標準出力） &lt;/font&gt; &lt;p&gt;だから、標準出力に「ｗ」が表示されるってわけだ。  &lt;p&gt;んじゃもう一個。  &lt;p&gt;&lt;font color="#008000"&gt;wWWWwwwwWWWw &lt;/font&gt; &lt;p&gt;とすると、分解  &lt;p&gt;&lt;font color="#008000"&gt;w&lt;br&gt;WWW&lt;br&gt;wwww&lt;br&gt;WWW&lt;br&gt;w &lt;/font&gt; &lt;p&gt;引数-Output標準出力-次の文字コード-「w」-InputArg  &lt;p&gt;でもって、２番目が３個だから「次の文字コード」、３番目が４個だからスタックの４番目「ｗ」、４番目が３個だから「次の文字コード」、５番目が１個だから「引数」  &lt;p&gt;命令文は  &lt;p&gt;&lt;font color="#000080"&gt;（（次の文字コード）スタック４番目）　の結果を　（（次の文字コード）引数）　の引数として実行する&lt;/font&gt;  &lt;p&gt;つまり、  &lt;p&gt;&lt;font color="#000080"&gt;スタック４番目の「ｗ」の次の文字コードを次の文字コードにスタックする&lt;/font&gt;  &lt;p&gt;なので、「ｘ」が取り出せるっと。  &lt;p&gt;さて、ここまでたどり着いて、大事なのは、ASCIIコード表だと気づく。これがなくちゃGRASSは始まらないですね  &lt;p&gt;&lt;a href="http://e-words.jp/p/r-ascii.html"&gt;http://e-words.jp/p/r-ascii.html&lt;/a&gt; &lt;p&gt;というわけで、今度はなんとなく流れが見えたので、次はHello､Worldを読んでみるｗｗｗｗｗ&lt;/p&gt; &lt;p&gt;最終目標、自在に文字を出してみたい、うん、そこにたどり着いてみたいなぁｗ&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;問題は、算数が苦手ってことかｗｗｗ&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/168884.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>草食言語ｗｗ</title><link>http://blogs.wankuma.com/esten/archive/2009/02/25/168811.aspx</link><pubDate>Wed, 25 Feb 2009 21:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2009/02/25/168811.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/168811.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2009/02/25/168811.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/168811.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/168811.aspx</trackback:ping><description>&lt;p&gt;というわけで、２月東京の勉強会で話題をさらったGrass言語、好奇心いっぱいにいじってみようかな、とｗ&lt;/p&gt; &lt;p&gt;Grassはくわしくはこちら&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.blue.sky.or.jp/grass/"&gt;Grass the grass-planting programming language&lt;/a&gt;&lt;/p&gt; &lt;p&gt;いろいろとコンパイラとかあるんだけれど、手軽に行こうかなとおもってｗ　Rubyインタプリタｗｗｗｗで行くことにしてみたのねｗｗうまくいくかなぁｗｗｗｗ&lt;/p&gt; &lt;p&gt;まずはRubyをインストール。いろいろとあるけど、手軽に&lt;a href="http://pub.cozmixng.org/%7Ethe-rwiki/rw-cgi.rb?cmd=view;name=Ruby+Install+Guide%3A%3Amswin32+%28%A5%D0%A5%A4%A5%CA%A5%EA%29"&gt;Ruby Install Guide::mswin32 (バイナリ)&lt;/a&gt;でｗｗｗｗ。&lt;/p&gt; &lt;p&gt;つぎに、Rubyインタプリタ用ｗのRubyプログラム&lt;a href="http://www.blue.sky.or.jp/grass/grass.rb"&gt;Interpreter written in Ruby&lt;/a&gt;をダウンロードｗｗｗｗｗ&lt;/p&gt; &lt;p&gt;でもって、プログラムソースはこちらｗｗ&lt;/p&gt;&lt;pre&gt;&lt;font color="#008040"&gt;wwvwwwWWWwwWwwWWWWwvwWWwwwWwwvwWwwwWwwvwWWwWWWWWwvwWWWwwwwWWWWwWWWWwWW
WWWWwWWWWWWWwWWWWWWWwWWWWWWWWwWwwwwwwwwvwWWWwwwwwWWWWWwWWWWWwWWWWWWWwW
WWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWwwwwwwWWWWWWwWWWWWWwWWWWWWWwWWWWWWWWWw
WWWWWWWWWwWwwwwwwwvwWWWWWwwwwwwwWWWWWWWwWWWWWWWWwWWWWWWWWwWWWWWWWWWWwW
WWWWWWWWWwWwwwwwwwvwWWWWWWWwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWwWWWWWW
WWWWWwWwwwwwwvwWWWWWWWWwwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWWWwWWWWWWW
WWWWwWWWWWWWWWWWWWwWwwwwwwwvwWWWWWWWWwwwwwwwwwwWWWWWWWWWwWWWWWWWWWWwWW
WWWWWWWWWwWWWWWWWWWWWWWwWwwwwwwvwWWWWWWWWWWwwwwwwwwwwwWWWWWWWWWWwWWWWW
WWWWWWwWWWWWWWWWWWWWwWwwwwwvwWWWWWWWWWWwwwwwwwwwwwwWWWWWWWWWWWWwWWWWWW
WWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWwWwwwwwwwvwWWWWW
WWWWWwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWWwwwwwwwwwwwwwwwwwwwWwwWWW
WWWWWWWWWWWWWWWWWwvwWWwwwwWWWwwwwwwwwwwWWWWwwwwwwwwwwWWWWWwwwwwwwwwwww
wWWWWWWwwwwwwwWWWWWWWwwwwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwvwWWWWWW
WWWWWWWWWWwwwwwwwWwwvwWWWWwwwwwwwWWWWWwwwWWWWWWwwwwwwwWWWWWWWwwwwwwwwW
WWWWWWWwwwwwwwwwwwwwwWWWWWWWWWwwwwwwwwwwwwwwvwWWwWWWWWw&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;で、これをインタプリタしてみた&lt;/p&gt;
&lt;p&gt;&lt;img title="grass" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="485" alt="grass" src="http://esten.cside.com/wankuma/img/9205f00bb8bb_12CA0/grass.png" width="672" border="0"&gt; &lt;/p&gt;
&lt;p&gt;うはｗｗｗでｗｗたｗｗｗｗｗｗｗｗ、Hello,World！！&lt;/p&gt;
&lt;p&gt;すごいなー。&lt;font color="#ff0000"&gt;これで何でHelloWorldになるんだろう？&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;というわけで、これがどうしてそうなるのかは、がんばって読み解いてみたい……と思うｗ&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/168811.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>