JavaScript

Pythonのメソッド引数に self を書くメリット

なぜPythonのメソッド引数に明示的にselfと書くのか に関連して。 確かに他の言語から移ってきた人からすると奇異に見えることが多そうですね。ただ、私はこの仕様を知ったとき「上手いな」と思いました。というのも、 instance.method(arguments) == ClassN…

List モナドの mplus サンプル in JavaScript

前回の記事 で Listモナドと Maybeモナドの mzero/mplus について書きましたが、Maybe についての例しか出してなかったですね。なので List モナドの例についても紹介しておこうと思います。前回と同じくクローン羊の例を使います。 羊を表す Sheep クラスが…

JavaScript でモナド List と Maybe に mzero と mplus

JavaScript で Maybe JavaScript で Listモナド に続く Monadic Programming in JavaScript シリーズです。今回は List と Maybe に Haskell で言う mzero と mplus を用意してみましょう、というお話。と、ちょっとその前に。今までの記事では Haskell の r…

JSONスキーマの存在意義

檜山正幸さんがJSONスキーマについて丁寧に解説されています。この記事のブコメを見てみると XML Schema が在るんだし軽さがウリの JSON にそんなの必要なくね?的なコメントが散見されます。実を言えば私自身もこの記事を最初に見たときにそう思いました。…

Array.prototype.map の自前実装

javascript array map 自前 という検索ワードでのリファラがあったので map の自前実装でも書いてみます。 とはいえ、すでにやってる方がいらっしゃるので Arrayオブジェクトのmapメソッド - バリケンのJavaScript日記 多元配列を一元配列に変換 (JavaScript…

prototype.js の Enumerable.invoke と Enumerable.pluck

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

callback の method call

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

高階関数で書き直し

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

JavaScript で Listモナド

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

JavaScript で Maybe

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