2011-11-01から1ヶ月間の記事一覧

続・クイックソート

そういえば、同じ値がたくさん入っている列をソートするときに、先日の partition をつかった実装だと、再帰呼び出しのなかで再度おなじ値の比較が走ることになって比較コストがばかにならないなあ… とおもった。 strcmp のように、一回の比較で同じか、小さ…

curry/uncurry 関数の使い方がわかった(かも?)

∧ を再定義する演習に取り組んでいるときに、検算を map で実行しようと考えた。 ∧ を and という名前の関数で定義したとして、これは二引数の(見かけをもったカリー化された、 Bool → Bool → Bool の型を持つ)関数になる。一方、ふたつの Bool 変数の全組…

今日の単語: bough

大枝は木の枝である。 この大枝から、ぼくらはメイ氏の寝室をのぞく。 この大枝から、ぼくらは手錠、皮の拘束具、そして泣き叫ぶ小さな男の子を見る。 A bough is a branch of a tree. From this bough, we can see Mr May's bedroom. From this bough, we c…

クイックソート

「プログラミング Haskell」の第1章に、次の定義のクイックソートが出てくる。 qsort [] = [] qsort (x:xs) = qsort smaller ++ [x] ++ qsort larger where smaller = [a | a ← xs, a ≦ x] larger = [b | b ← xs, b > x]この章の例題を解いていて気が付い…

static 宣言の後に extern 宣言しても大丈夫

static int N = 256; extern int N; と書くのは合法 (そして N は static)。 妙だ。 非常にむずがゆい。逆はダメ。 つまり extern int N; static int N = 256; と書くとエラー。