タグ

ブックマーク / propella.hatenablog.com (2)

  • Joy 代数。http://www.latrobe.edu.au/philosophy/phimvt/joy/j04alg.html を読む。 - 言語ゲーム

    順番が無茶苦茶だけど、四番のドキュメントを読みます。スタック言語におけるモナドの扱いに触れるのが目標です。Joy 代数によって、高階関数の色々な性質を変数無しで表現する事が出来るらしいです。 準備 私は http://www.latrobe.edu.au/philosophy/phimvt/joy/joy.tar.gz からダウンロードできる joy を使っています。cygwin, linux, mac 等で展開して make して、/usr/local/bin 等にバイナリをコピーすると良いです。http://d.hatena.ne.jp/shortsleeved/20070604#p1 を参考に rlwrap をインストールすると便利さ倍増です(cygwin の場合は chmod 700 ~ が必要かも知れません)。joy は基的に標準入力から読んで標準出力に出すという単純な仕組みな

    Joy 代数。http://www.latrobe.edu.au/philosophy/phimvt/joy/j04alg.html を読む。 - 言語ゲーム
  • ArrowLoop - 言語ゲーム

    さて、気分を変えて ArrowLoop をやります。論文に書いてある loop f b = let (c,d) = f (b,d) in c の意味が全く分からなくて Arrow の勉強が一ヶ月近く停滞していたのですが、id:MaD さんが素晴らしい解説 http://d.hatena.ne.jp/MaD/20070818 を書かれているので自分なりに写経します。loop を使って普通のループを作るには、引数として関数を一つ与えます。関数の型は (b,d) -> (c,d) のような入出力ともタプルとします。よくある図で示すと、タプルの後ろの引数がくるりと入力に繋がれる形をしています。 import Control.Arrow nonsense (b, d) = (b + 1, d * 2) -- *Main> loop nonsense 1 -- 2 -- このしようも無い例では、b +

    ArrowLoop - 言語ゲーム
  • 1