2012-09-01から1ヶ月間の記事一覧

ChromeのIndexedDB

https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-html5/RQFrG9SDPTI%5B1-25%5Dversion change transactionがアクティブな場合に、別のトランザクションを実行するとエラーになる、という話。バージョン21から仕様に合わせて厳…

C#でカリー化と部分適用

C#

勉強会で話題になっておもしろかったので、実装してみました。 カリー化 4つの引数まで対応したFuncの拡張メソッド。 public static class FuncCurry { public static Func<T1, Func<T2, TResult>> Curry<T1, T2, TResult>(this Func<T1, T2, TResult> f) { return arg1 => arg2 => f.Invoke(arg1, arg2); } public st</t1,></t1,></t1,>…

部分適用の使いどころ

C#

部分適用というのは、簡単に言ってしまえば、関数の型を変換する方法の1つです。たとえば、Func を Func に変換するとか。部分適用という言葉を使わずとも、これはよく行われていることで、ラムダ式を使って実現されます。わかりやすいように、型を明示して…

継承やインタフェースはほんとうにいらないかもしれない

F#

http://blog.livedoor.jp/gab_km/archives/1425937.htmlだって、F#にはレコードがありますから。(いまさらのリアクションでごめんなさい) type Animal = { name: string; bark: unit->string } let makeDog name = { name = name ; bark = fun () -> "Bow …

スクリプト言語をつくってみたよ その2

昨日の続きです。 昨日のエントリでは紹介しませんでしたが、そういえば、プロパティにgetter/setterを定義できます! Propertyというクラス(コンストラクタ)が組み込みで用意されているのですが、こいつにgetter/setterを教えてあげます。 person = { _na…

スクリプト言語作ってみたよ

2週間でできる! スクリプト言語の作り方 (Software Design plus)と言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装までにとても感銘を受けて、自分でも作ってみました。みました、といっても完成したわけでなくそれなりに動くようになった…