タグ

2009年3月27日のブックマーク (6件)

  • Mozilla Re-Mix: ケーブルもチューナーも無しで世界中のテレビチャンネルを試聴できるFirefoxアドオン「TV-FOX」

    PCテレビを見ることができるようになってからずいぶん経ちますが、最近では光ファイバーを使ったテレビ放送なども利用できるようになり、ますますPCでのテレビ視聴が充実してきています。 しかし、こうした放送を視聴するには、契約や月額料金などが必要となる上、専門チャンネルなども個別に契約しなければ視聴することができません。 また、光ファイバー経由のサービスを使わず放送を視聴したい場合は、アナログ・地デジチューナーなども必要となります。 こうしたことからテレビ視聴環境の導入を見送っている方も多いと思いますが、Firefoxに「TV-FOX」というアドオンをインストールしておけば、ちょっとしたケーブルテレビで見るような放送ならタダで好きなだけ見ることができるようになります。 「TV-FOX」は、Firefoxに常駐するツールバーから、世界各国の数千チャンネルのテレビ放送を無料で視聴することができると

  • カリー化関数 (curried function) について - (new Hatena).blog()

    SML という言語のテキストを読んでいて、これまで自分がカリー化という言葉をよく理解せずに使っていたことに気付きました。 どうやら部分適用の概念と混同していたようです。 一般に、ML や Haskell のような関数型言語においては、カリー化とは n 要素タプルを取る関数 fun f (x,y) = z を、n 引数関数 fun curried_f x y = z に変形することと同義らしいです。(n > 1, z は適当な式とします) ML 等では n 引数を取る関数 fun f x1 x2 ... xn = z (* 1 *) は、実体としては次のように1引数関数が n 個連なったものとして定義されています。 val f = fn x1 => fn x2 => ... fn xn => z (* 2 *) (1 と 2 は同値であり、1 は 2 の構文糖衣に過ぎません) f は、最初の

    カリー化関数 (curried function) について - (new Hatena).blog()
  • ML っぽいカリー化関数を定義するマクロ - (new Hatena).blog()

    ML とか Haskell のコードを読む時に私がどうしても憧れてしまうのが、自動的にカリー化定義される関数です。 Scheme にもカリー化関数を定義する構文自体は存在します (処理系にもよるでしょうが)。 例えば、このようなラムダ式のネストで定義された関数を (define add3 (lambda (a) (lambda (b) (lambda (c) (+ a b c)))))次のようなスタイルで短く書くことができるんです: (define (((add3 a) b) c) (+ a b c))でも全然自動的ではないですし、必ず定義した通りに適用しなければいけません: (((add3 1) 2) 3)2番目と3番目の引数を同時に与える、とかは出来ないわけです。 そこでちょっと知恵をひねりまして、case-lambda を使って、あらゆる関数適用のパターンに応じたラムダ式をあらかじめ

    ML っぽいカリー化関数を定義するマクロ - (new Hatena).blog()
  • Schemeでカリー化

    Haskellの有名な特徴として、関数が勝手にカリー化されるという点があります。 要するにHaskellの関数は常に部分適用可能になっていて、f foo bar bazという関数適用は(((f foo) bar) baz)と解釈されています。これは非常に強力な機能で、汎用的な関数を目的に合わせて簡単に特殊化することができます。 Schemeやその他のLispでは、引数は必ず同時に与えないといけないので、カリー化したものを作ろうとするとクロージャを使って(define f (lambda (x) (lambda (y) (lambda (z) ...))))とでもしなければなりません。しかも呼び出すときには(((f foo) bar) baz)と、1つずつ順番に適用する必要があります。 私が欲しいのは、"(Haskellが透過的にやっているように)与えられた引数を先頭から順に束縛し、足りない

  • 中里一日記: ブライアン・ゲーツ、ダグ・リーほか『Java並行処理プログラミング』(SoftBank Creative)

    ブライアン・ゲーツ、ダグ・リーほか『Java並行処理プログラミング』(SoftBank Creative) 結論: すべてのJavaプログラマはただちに書を読むべきだ。読む時間がないのなら、あなたにはコードを書く資格がない。 理由: ・安い Javaの並行処理を知るために、私は莫大な授業料を支払った。「synchronizedやvolatileを使ってはいけない」くらいの分別は最初からあったが、それ以上のことはなにも知らなかった。 並行処理には試行錯誤は役に立たない。テストは無力だ。正しいコードを書くか、それとも爆弾を作るか、どちらかだ。爆弾を作れば高くつく。 書には、私が莫大な授業料を支払って知ったことがすべて書いてある。 ・薄い 458ページは厚いと思えるかもしれないが、それは人間の頭が破壊的代入にしがみついているせいだ。破壊的代入と並行処理を両立させたいと人間が願う以上、この程度

  • 良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blog

    Java並行処理プログラミングを読み終えた。ここ 1 年に読んだ技術書の中でダントツのベスト。(2位はWorking Effectively With Legacy Code) 「Javaだから関係ない」と思った人にこそ読んで欲しい。僕もここ数年 Java のコードなど一切書いていないが、このを読んで得たものは非常に大きかった。 このでは マルチスレッドプログラミングにおける問題と背景、その対処方法 Java が提供している API の設計と実装 を解説している。分かりやすさとレベルの高さを兼ね備えたとても良い。翻訳も最高。 僕はこのを読んで、Java の並行処理プログラミングは、想像を遙かに超えて進化している事に驚きを隠せなかった。何回も twitterJava すげーと叫んだ。 これを読んでしまうと、最近僕が熱心な Scheme も含めて、自分の身の回りにあるプログ

    良いプログラマを目指すなら「Java並行処理プログラミング」は今すぐ読むべき - higepon blog