2011-06-01から1ヶ月間の記事一覧

Javaでチャーチ数

「関数型のテンプレートエンジンで計算 - terazzoの日記」でテンプレートエンジン上でチャーチ数を使って計算してみる際に、どうにも内容が理解できずに詰まったので、Javaで実装してみた。 プログラムとしての動きをつかむことが目的なので全部をλで書き下…

関数型のテンプレートエンジンで計算

「関数型のテンプレートエンジンで何が出来るか - terazzoの日記」の続編ですよ。 但し中途半端の上に、かなりお遊びで。 関数型のテンプレートエンジンの定義はこの辺りで。 各テンプレートが独立した静的スコープを持つ テンプレート(の一部)がファースト…

続・続・比較モナド〜復讐編〜

もういい加減飽きてるだろうけど続けるよ。今日は比較モナドについて復讐するよ。 ソースコードは抜粋なので全部を見たかったらここ見てください。 事のいきさつ ◆ 「http://d.hatena.ne.jp/terazzo/20110526/1306434704」で「比較条件」のチェーンってモナ…

JavaでモナドでFizzBuzz〜復讐編〜(Re:数値のFizz、Buzz等への変換を、Javaで通常より直感的に表現したい)

以前作った「数値のFizz、Buzz等への変換を、Javaで通常より直感的に表現したい - terazzoの日記」の焼き直しですよ。 事のいきさつ ◆ id:sumim様が、「数値のFizz、Buzz等への変換を、Smalltalk(とRuby)で通常より直感的に表現したい - Smalltalkのtは小…

モナドではない

大きな勘違いをしていたかも。モナドの十分な要件って、 ある型aに対してそのコンテナとなる型M(a)が定義される 関数unit_a:a→M(a)、bind_aa:M(a) → (a → M(a)) → M(a)が定義される*1 unit_aとbind_aaについてモナド則が成り立つ 型aの要素xとf:a→M(a)となる…

続・Javaで複合モナド

前回の自分用宿題 ・ 拡張スタイルの関数(というかbind)の導出 これをやってみる。あと逆に拡張スタイルから代数スタイルの導出もやる。 unit, flatten, mapからのbindの導出 unit, bindからのflatten, mapの導出 e_unit, e_bind, l_unit, l_bind, combinati…

Javaで複合モナド

実験的にテンプレートエンジンを書き始めたのはいいけど、早くもかなりpurityが失われている感じなので整理したい。実装をざっと見て、 テンプレートのモナド コンテキスト(ステートモナド) (あと多分リストも) が混ざった感じの実装になっているので綺麗に…

単純なXMLをhashrefに変換する。

急にPerlの仕事が来たので。 属性は使用しない 同一階層で要素名が重複しない 要素の中身は要素のリストかテキストデータ というとても単純なXML(というよりSML?)を返す会員情報取得APIがあったのでhashrefで受け取れるようにしたよ。XML::Parser::Liteを使…