2006-04-01から1ヶ月間の記事一覧

テンプレートでたらいまわし(8回目)

C++

継続渡し風味。 #include <iostream> /* True */ class True; /* False */ class False; /* Bool */ template <bool b> struct Bool; template <> struct Bool<true> { typedef True Result; }; template <> struct Bool<false> { typedef False Result; }; /* NullType */ class NullType; </false></true></bool></iostream>…

テンプレートでたらいまわし(7回目)

C++

引数を遅延評価するようにしたらかえって遅くなった。 #include <iostream> /* Int */ template <int x> struct Int { enum { value = x }; }; /* Tarai */ template <int x, int y, int z> struct Tarai; template <class X, class Y, class Z> struct Tarai0; template <bool b, class X, class Y, class Z> struct Tarai1; template </bool></class></int></int></iostream>

読んだ本

三毛猫ホームズの降霊会 / 赤川次郎 ISBN:4334076009 キーリ IX 死者たちは荒野に永眠る 下 / 壁井ユカコ ISBN:4840233896 エクスプローラー2 憂感少女 / 北山大詩 ISBN:4829163496 イリスの虹2 ミス・ミステイク / 七月隆文 ISBN:4840233942 シャルロット・…

テンプレートでたらいまわし(6回目)

C++

遅延評価する前段階のちょっとした変更のつもりが、予想外な高速化ができた。 #include <iostream> /* Int */ template <int x> struct Int { enum { value = x }; }; /* Tarai */ template <int x, int y, int z> struct Tarai; template <class X, class Y, class Z> struct Tarai0; template <bool b, class X, class Y, class Z> struct Tarai1; template </bool></class></int></int></iostream>

テンプレートでたらいまわし(5回目)

C++

Typelistを使わない方法。この方がさらに速い(しかも引数が0の場合も動く)。 #include <iostream> /* True */ class True; /* False */ class False; /* Bool */ template <bool b> struct Bool; template <> struct Bool<true> { typedef True Result; }; template <> struct Bool<false></false></true></bool></iostream>…

テンプレートでたらいまわし(4回目)

C++

さらに高速化・簡単化できた。 #include <iostream> /* NullType */ class NullType; /* Typelist */ template <class T, class U> struct Typelist; /* Length */ template <class T> struct Length; template <> struct Length<NullType> { enum { value = 0 }; }; template <class T, class U> struct Length< Typelist<T, U> > { </t,></class></nulltype></class></class></iostream>…

テンプレートでたらいまわし(3回目)

C++

こうするとだいぶ速くなった。 #include <iostream> template <class T, class U> struct Typelist { typedef T Car; typedef U Cdr; }; class NullType; #define TYPELIST_1(T1) \ Typelist<T1, NullType> #define TYPELIST_2(T1, T2) \ Typelist<T1, TYPELIST_1(T2) > #define TYPELIST_3(T1, T2, T3) \ Typelist</t1,></t1,></class></iostream>

買った本

キーリ IX 死者たちは荒野に永眠る 下 / 壁井ユカコ ISBN:4840233896 エクスプローラー2 憂感少女 / 北山大詩 ISBN:4829163496 イリスの虹2 ミス・ミステイク / 七月隆文 ISBN:4840233942 にんげんはじめました / 吉岡平 ISBN:425777052X にんげん ゆめみま…

テンプレートでたらいまわし(2回目)

C++

前回、「テンプレートの方はあまり数字を大きくできない」と書いたけど、試しにやってみるとどうなるか。やることは単純で、以下のような定義を追加して、 typedef Typelist<int, T12> T13; typedef Typelist<int, T13> T14; typedef Typelist<int, T14> T15; …(延々繰り返し) typedef Ty</int,></int,></int,>…

テンプレートでたらいまわし

C++

できたような気もするけどこれ本当に動いてるのか? #include <iostream> template <class T, class U> struct Typelist { typedef T Car; typedef U Cdr; }; class NullType; #define TYPELIST_1(T1) \ Typelist<T1, NullType> #define TYPELIST_2(T1, T2) \ Typelist<T1, TYPELIST_1(T2) > #define TYPELIST_3(T1, T2, T3) </t1,></t1,></class></iostream>…

買った本

ひぐらしのなく頃に 鬼曝し編 1巻 / 鬼頭えん, 竜騎士07 ISBN:4047138150 MELTY BLOOD 1巻 / 桐嶋たける, TYPE-MOON ISBN:4047138185

Hatena Asin Info アップデート

はてなのASINページがリニューアルして使えなくなっていたGreasemonkeyスクリプトをアップデートした。おまけで広告を削除する機能も付けてみたけど、これはスタイルシートで非表示にしてるだけなので、それ専用の方法(Stylish Extension等)を使った方がい…

買った本

武装錬金 10 (10) / 和月伸宏 ISBN:408874019X みえるひと 3 (3) / 岩代俊明 ISBN:4088740440 鉄腕バーディー 12 (12) / ゆうきまさみ ISBN:4091510744 入門Haskell―はじめて学ぶ関数型言語 / 向井淳 ISBN:4839919623 関数型言語好きと言いつつLisp方言ばか…

テンプレートでフィボナッチ数列

C++

『Modern C++ Design』 (ISBN:4894714353)を読んでC++のテンプレートが面白かったのでちょっと遊んでみた。 #include <iostream> template <class T, class U> struct Typelist { typedef T Car; typedef U Cdr; }; class NullType; #define TYPELIST_1(T1) \ Typelist<T1, NullType> #define TYPELIST_</t1,></class></iostream>…

読んだ本

12月のベロニカ / 貴子潤一郎 ISBN:482911486X

買った本

Boost C++ Libraryプログラミング / 稲葉一浩 ISBN:4798007862 WILLCOM携帯アプリプログラミングブック /布留川英一 ISBN:4839919682 月刊ドラゴンマガジン MAY 2006 最近立て続けに『C++ Coding Standards』 (ISBN:4894716860)と『Modern C++ Design』 (ISB…

Cで継続渡し(末尾最適化バージョン)修正版

以前のバージョンは、アセンブラを使っていた名残で、void*とintが同じサイズであるという移植性のない仮定をしていたので修正した。 変更点としては、キャストの代わりにunionを使うようにしただけ。 fib.c #include <stdio.h> #include <stdlib.h> #include "obj.h" int main(</stdlib.h></stdio.h>…

Rubyで継続渡し

「○○言語で継続渡し」シリーズ、今回はRuby。参考文献は『Rubyプログラミング入門』(ISBN:4274063852)。ちょうどp.201にfib関数が載っていたのでそれをベースに一部修正した(これまでと同じアルゴリズムにするため)。 #! /usr/bin/ruby def fib(n) if (n =…

Java VM上で動くスクリプト言語

Sleep Perlの文法を持ったJavaベースのスクリプト言語 JRuby Javaで実装されたRubyインタプリタ Kawa Javaで実装された多言語(Scheme, XQuery, Emacs Lisp)処理系 Jython Javaで実装されたPython処理系 Rhino Java による JavaScript実装 Pnuts Java用のス…

Perlish Magazine

http://jp.rubyist.net/PerlMa/Perlに関するウェブ雑誌。その割にはドメインを見ると…*1。 内容は、結城浩さんのインタビューとかまつもとゆきひろさんによるPerlとRubyの比較とか。面白かったのはParrotの紹介記事。この前夢想したマルチリンガルOSに限りな…

読んだ本

吉永さん家のガーゴイル9 / 田口仙年堂 ISBN:4757726635 マリア様がみてる くもりガラスの向こう側 / 今野緒雪 ISBN:4086007436 教室の正義―闇からの声 / 赤川次郎 ISBN:4047881775 時を超えるSOS―テレパシー少女「蘭」事件ノート〈4〉 / あさのあつこ ISBN:…