タグ

ブックマーク / torus.jp (2)

  • XML を Perl の高階関数で。 : torus solutions!

    XML::LibXML で XML を作るときに、 いちいち createElement とか appendChild とか書くのに飽きてきたので、 高階関数版を作ってみた。 (2005/4/27:テキストノードを追加する機能を付け足して、説明も書き足しました。) 前置き Perl でクロージャを作ってプログラミングするのが好きですというと、 Perl でクロージャなんかかけるの? という顔をする人がたまにいるんですが、 もちろんかけます。 『Higher-order Perl: A Guide To Program Transformation』 というが出ているくらいだし。 例 my $dom = (_DOM (_E fuga => {a1 => "attr1", a2 => "attr2"}, (_E hoge => {}, "Hahaha!"), (_E "piyo"))); こ

  • なんでも継続、Perl で。 : torus solutions!

    最近よくコンティニュエーション・パッシングだとか、 継続ベースの○○とか、 そういう話題を耳にします。 でも継続っていうのが何なのか良く分からなかったので、 お正月休みに Shiro Kawaiさんの なんでも継続 を読んでみました。 今までずっと難しいだろうと思って読んでなかったんだけど、 これがまたとても分かりやすくて面白かったので、 途中にあげられていたサンプルコードを Perl でも書いてみました。 普通の再帰形式 Scheme では (define (leaf-count tree) (if (pair? tree) (+ (leaf-count (car tree)) (leaf-count (cdr tree))) 1)) Perl では Perl にはペアがないので、 2 要素の配列でエミュレートすることにします。 それ以外はそのまんまです。 sub leaf_count

  • 1