prototype.js の Enumerable.invoke と Enumerable.pluck

昨日の記事 [id:gakuzo:20090403:1238715610] に書いた callMethod ですが、似たような発想のメソッドが prototype.js には用意されているようですね。昨日の例だとこんな使い方ができるようです。 customers.map(callMethod("isOver", 30)); // このコード…

NTTドコモ、メールアドレスのルールを変更 〜 ピリオド連続などが使用不可に

http://www.rbbtoday.com/news/20090403/59059.htmlついに!ついに!!あとは au か……。

callback の method call

jQuery や prototype.js を始め、JavaScript で高階関数を扱うライブラリも最近では一般的になりました。そのようなライブラリでは大抵 callback 関数に引数でオブジェクトを渡すことが多いのですが、JavaScript はれっきとしたオブジェクト指向言語なので、…

Purely Functional Data Structures 写経 3.2 Binomial Heaps

Purely Functional Data Structures作者: Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディア: ペーパーバック購入: 5人 クリック: 46回この商品を含むブログ (25件) を見るPurely Functional Data Structures の Haskell 写経…

高階関数で書き直し

昨日の JavaScript で Listモナド [id:gakuzo:20090401:1238599220] ですが、サンプルのために expandCharClass と expandAltWords をベタっと書きましたが、本来ならもう少しすっきり書きたいですね。先に String.prototype.toArray を定義しておきます。pr…

モナドは関数合成の抽象化

以前にモナドについて書いたのですが、どこかで書かれていた「モナドは関数合成の抽象化」という表現がなんとなくしっくりきました。合成戦略を各モナドインスタンスが担う、と。それから do構文について。最初、do構文は複文を実現するための機構なのかな、…

Purely Functional Data Structures 写経 3.1 Leftist Heaps

Purely Functional Data Structures作者: Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディア: ペーパーバック購入: 5人 クリック: 46回この商品を含むブログ (25件) を見る続きです。P17〜P20まずは Heap の signature から。 …

JavaScript で Listモナド

[id:gakuzo:20090223:1235405890]「JavaScript で Maybe」に続く、Monadic Programming in JavaScript 第二弾。JavaScript で Listモナドです。さっくりコードに行きましょう。 Array.ret = function(obj) { return [obj]; } /** jQuery版 */ Array.prototyp…

Purely Functional Data Structures 写経 2.2 Binary Search Trees

Purely Functional Data Structures作者: Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディア: ペーパーバック購入: 5人 クリック: 46回この商品を含むブログ (25件) を見る続き。P11〜P15 data Ord a => Tree a = E | T (Tree …

Purely Functional Data Structures 写経 2.1 Lists

Purely Functional Data Structures作者: Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディア: ペーパーバック購入: 5人 クリック: 46回この商品を含むブログ (25件) を見る関数型言語ならではのデータ構造を身に付けるために P…

Google、AppEngineでJavaのサポートを開始

http://jp.techcrunch.com/archives/20090326get-ready-for-java-on-appengine/ついに来た!Java対応のGoogle App Engineとも言うべき「Stax Networks」ローンチ ていうのを見かけて Stax で少し遊んでいたんですが、Google App Engine 本家もついに動き出し…

Monad インスタンスのモチベーション

Haskell の勉強を続けているわけですが、未だに Monad がすっきりと腑に落ちていません。Monad則は理解できます。 個々の Monad Instance、Maybe や List、State と言った個別の instance に関しては、使い方もメリットも理解できます。 ただ逆に、こういう…

件数指定Iterator

前回の記事 [id:gakuzo:20090227:1235728271] で書いた take ですが、これも Iterator にした方が、遅延評価っぽくていいかもしれません。 import java.util.Iterator; public class FixedLengthIterator<T> implements Iterator<T> { private int index; private </t></t>…

Javaで無限リスト

Haskell の勉強をしていたら iterate という関数を見つけて非常に興味がわきました。 iterate は「初期値」と「現在の値から次の値を算出する関数」の二引数を与えると無限リストを生成してくれる関数です。 線形合同法を用いた疑似乱数列なども簡単に作れて…

Thread Safe な汎用オブジェクトCache

「DB負荷を減らしたいのでマスタテーブルはキャッシュして下さい><」だとか 「ファイルIOは重いのでテンプレートはキャッシュして下さい><」だとか 割と良く言われたりします。オブジェクトのキャッシュは手軽な高速化の手段だと思われているようですが…

JavaScript で Maybe

オブジェクトが深くネストした JSONデータを扱う際に、途中のプロパティの存在チェックを毎回やるのが非常に手間で、こんなとき JavaScript にも Maybeモナドがあると便利なのになーとか常々考えてました。と思っていたら RubyでMaybe なんて楽しげなことを…