2007-10-01から1ヶ月間の記事一覧

トンデモ : 幽霊なんてちょっと甘くないですか?

私は歴史的な事情により仏教徒なのですが、仏教って幽霊という存在をまるっきり認めていないのですね。0%です。 というのは、人や他の生き物は、輪廻という永遠の苦しみの中に囚われてしまっていて、逃れられないという大前提があるのです。だから、自殺な…

関数プログラミングのアプローチ (7)

モンテカルロ法の関数的プログラム (2) 前回、遅延リストを作成しました。これを用いて前に作成したモンテカルロ法のプログラムを書き換えたいと思います。しかし、プログラムを書き換える前に、次の2つのコードを見てください。 x, ls = next(ls) x, rs = …

関数プログラミングのアプローチ (6)

遅延リスト 前回の修正で、シングルスレッド化を解消することができましたが、代わりに1つ新たな不都合が生まれました。 def main (): print math.sqrt(6.0 / estimate(cesaro_test, pairlist(10000, RandState.new()))) 上は、前回のプログラムのmain()関…

Haskell: seqってよくわからない

Haskellのseqって、Haskellの意味論の中で適切に定義できるものなのだろうか?

Java: CleanJ: オブジェクトと配列ってどちらの方が軽いのだろう?

考えるだけ無駄なような疑問ですが、 class Thunk { Object value; } new Thunk(); と new Object[1]; はどちらの方が軽いのかということを考えています。 比較ポイントは メモリ使用量 createのコスト loadのコスト storeのコスト メモリ使用量はほとんど変…

Java: CleanJ: データ型はどう表現するか?

CleanJの前のバージョンはいちいちクラスを作っていたのですが、ABCコードではフィールドに対してインデックスアクセスするので、インデックスとフィールドの対応表を作っていたのでした。しかし、どう考えても効率が悪いです。 CleanJの新しいバージョンで…

Haskell, Concurrent Clean : Re: 正格性フラグを使ってseqを定義する

http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20071023#p01 http://twitter.com/jmuk/statuses/365608742 これにそれほど感銘を受ける理由がいまいち分からなくて、不思議な感じ。 :: T = T !Int と t :: !Int -> A って大した違いはなくて、前者のほうは …

fluent interface

fluent interfaceって、気持ち悪くない?

m-fold composition of permutation

ということの意味がわからなくて困っていたが、ググったらすぐわかった。 http://web.ew.usna.edu/~wdj/book/node153.html

Concurrent Clean : 内包表記でのパターンマッチ

http://ja.doukaku.org/comment/2841/ via: http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071022#p01 内包表記でパターンマッチなんてできるんだー。 Cleanでもできるらしい。 uniqOnly xs = [x \\ [x]<-[[z \\ z<-xs | z==y] \\ y<-xs]] 知らな…

関数プログラミングのアプローチ (5)

非シングルスレッド化 前回、プログラムを関数的に書き換えましたが、プログラムはシングルスレッド化されていたために、関数プログラミングのメリットを生かせていませんでした。ここでは、これを非シングルスレッド化する方法について検討します。 シング…

miau

http://miau.jp/ via: http://d.hatena.ne.jp/atsushieno/20071017/p1 こんなの出来てたんだな。 私はとても「先進」ユーザーとは言えないけれど、生温かく見守ろうと思った。

集中力不足

最近、集中力が不足気味で困っているので、Pink Noizeを試してみることにした。 http://www.vector.co.jp/soft/data/art/se415019.html ここでmp3ファイルが手に入るので、これをCDに焼いて聞くことに。 参考) http://blog.livedoor.jp/sparklegate/archive…

Concurrent Clean : print命令

http://cleanj.sourceforge.net/abc_inst.html#print print系命令は、printしか説明を書いていないが、system.abcにはそれ以外の命令も使われている。しかし、今までの所、Cleanコンパイラが出力したabcコードに含まれているものは見たことがない。

関数プログラミングのアプローチ (4)

モンテカルロ法の関数的プログラム (1) 前回、関数的な乱数生成器を作成しました。これを用いて関数的なモンテカルロ法のプログラムを作成することはそれほど難しくありません。 以下は、命令的プログラムを関数的な乱数生成器を用いて書き換えたものです。 …

Concurrent Clean : CleanJ : build_r

http://cleanj.sourceforge.net/abc_inst.html#build_r build_rにB値の型情報が付いてないなー。

数学的帰納法

[id:okamoto7:20071012:p1] コメント欄がいろいろなことになっているけれど、これってcが定数にならないということじゃないのだろうか? つまり、 1+2+...+n = O(n) は ∃c > 0, ∀n, 1+2+...+n ≦ cn なので、 i) c ≧ 1 ならば 1 ≦ c*1 ii) n ≦ c のときは 1+2…

生活

生活リズムを見直したら、PCを触る時間が減ってしまった。

本が届いた

[id:lethevert:20071006:p1]で買った本が届いた。 「多少汚れが・・・」的なことが書いてあったが、表紙の痛みがひどい。しかし中はわりかしきれい。 定価に対してひどく高値で売られてるということがわかった。カバーにかかれていた値段は、$32.95だった。J…

Haskell: Haskellがアセンブリになるまで

http://pira.jp/nandemo/wiki.cgi?page=62 うは。すごい面白そう。 聞いてみたいけど、平日の午後 5 時 35 分って、絶対無理だな。

関数プログラミングのアプローチ (3)

関数的な乱数生成器 前回の課題は、乱数生成器を関数的に記述するにはどうすればよいかということでした。グローバル変数に乱数生成器の状態を保持することなく乱数生成器を書くにはどうすればよいでしょうか? 答えは、全ての状態を関数の引数として受け渡…

OCaml, Concurrent Clean, Java: 型からプログラムを生成する

http://itpro.nikkeibp.co.jp/article/COLUMN/20071005/283903/ む。 Genericsの定義の仕方に似てるなー。 - とりあえず、脊髄反射でCleanとJavaに翻訳 Java版はやや無理があるけど、一応ちゃんと動きます。出力形式をOCaml形式にしてますけど、Java式に出力…

つぶやき

あー、これってArrowだな。

イベント: Seasar Conference 2007 Autumn

http://event.seasarfoundation.org/sc2007autumn/

Concurrent Clean : CleanJ : 整理

今問題になっているのは、スタックの表現方法なのだけれど、それを整理しておく。 Real型の扱い B-Stackやユーザー定義データに含まれるReal型の値は、2つのB値として取り扱われているのだけれど、これをJavaに置き換えたときには、double型の値を2つのint…

Concurrent Clean : コンパイラがHeap Fullになった

1つの関数が長すぎるんだよ。

Online Computation Compet Analysis

昨日の件で、結局一番混乱していたのは、competitive analysisという概念をよく理解していなかったことらしいのだけれど、それは新しい本を読みはじめたときはよくあることなので。 そもそも、MTFがcompetitiveということのイメージがよく掴めなかったという…

関数プログラミングのアプローチ (2)

参照透明 前回の続きを進める前に、関数的というものを定義しておく必要があるかと思います。関数的なプログラムとはどういうプログラムなのでしょうか? 関数的なプログラムとは参照透明性が確保されたプログラムのことで、参照透明とは Referential transp…

Concurrent Clean : CleanJ : 他のモジュールの情報を参照する必要性

replace命令などを見ると、他のモジュールで定義されている情報を参照しなければ静的に取り扱うことはできなさそうだ。(後述) これは面倒だなぁ。 - あ、これは引数のa_size, b_sizeから必要な情報が取得できるのか。 それなら、他のモジュールを見る必要…

Java: Jasmin : doubleをint2つとして取り扱うことはできるか?

Jasminをインストールして実験してみた。 .method public static main([Ljava/lang/String;)V .limit stack 3 getstatic java/lang/System/out Ljava/io/PrintStream; ldc 1 ldc 1 invokevirtual java/io/PrintStream/println(D)V return .end methodという…