2009-01-01から1年間の記事一覧

総括

まずめっちゃさぶい。地球温暖化とか言ってる輩の気が知れない。めっちゃさぶいやん。あと今年の最初のほうとか全く記憶にない…なんか過去の日記読んでたらAC4とかやってたらしい。そうか、あれ今年やってたのか。ゲームと言えばBALDR SKYとか、ほかなんかあ…

今年最後の日なので

今から本気だす

話題に乗り遅れ感抜群のlexical_castの話

C++

もとの話はこのあたりとかこのあたり。 いっそのことポリシーとか何も書かなくても良きに図らってよ!というわけで、そういうものを書いてみるなど。 #include <typeinfo> #include <sstream> #include <string> #include <boost/optional.hpp> #include <boost/lexical_cast.hpp>namespace detail { template<typename Target, typename Source> struct lcast_auto_erro</typename></boost/lexical_cast.hpp></boost/optional.hpp></string></sstream></typeinfo>…

Variadic Template Parameters のパラメータの数を制限する

Variadic Template Parameterで対応できない例として、最低N引数以上の可変個引数関数を宣言する一般的な方法、というのを思いだしたんだけど、 template<typename ...Params> decltype( boost::enable_if< boost::mpl::bool_<(sizeof...(Params) > 2)>, int>::type()) f(Params.</typename>…

Boost.勉強会.Aftercare

「質問タイムで回答しか聞こえねー」というご意見をいくつかいただいたので、思いだしながら補足したいと思います。hirataraさんもまとめてくださっていますので、そちらもご覧ください。 あと私のプリプロセッサ関連のエントリーまとめも置いときますね。 …

Boost.勉強会.Log

私のセッション資料はこっちに置いてあります。いくらか手直しました。あと http://www.ustream.tv/channel/boostjp の下のほうに各セッションの録画へのリンクがあります。土日はBoost.勉強会にスピーカーとして参加するべく、東京に行った。 思えばなぜ私…

オーバーロード自動生成ソース

追記:発表の資料にもあった例ですが、make_tupleだと別に非const参照をオーバーロードする必要はないので、型Tのコンストラクタの引数を受けとって、その引数から作ったTの値を保持するmy_smart_ptrを返す関数と変更しておきました。追記ここまで #include <boost/preprocessor/arithmetic/inc.hpp></boost/preprocessor/arithmetic/inc.hpp>…

予測変換は否定しないけど気にいらない

http://cpplover.blogspot.com/2009/12/blog-post_9493.html 予測変換の技術とか、そういうのを否定するつもりはないんだけど、あまり使いたいとは思わないなぁ。 あんまり賢すぎると、自分の知ってる以上のかっこいい日本語とか使ってしまいそうなのがいや…

Befungeを見習って

f >>> g1 &&& (g2 >>> g3) >>> h1 *** h2 >>> first i >>> j1 ||| j2を、 f v v g2 v v g1 &&& v v v v g3 v v h2 j1 v * | * >>> | * | h1 >>>>>> i j2とか書けたら愉快ですね(monospaceなフォントで表示してください)。

BOOST_SCOPE_EXIT_ENDは消せないのか?

C++

http://twitter.com/cpp_akira/status/5995895644 中身は追ってないけど、 BOOST_SCOPE_EXIT_END はどうにかならないのかなー、とか http://twitter.com/DecimalBloat/status/5996160887 SCOPE_EXIT_ENDを消すのは無理っぽいです。詳しく書くとややこしいの…

Functor, Applicative, Foldable, Traversalの練習

class Functor f => Applicative f where pure :: a->f a <*> :: f (a->b)->f a->f b class Foldable t where foldr :: (a->b->b)->b->t a->b foldr f b = foldMap (`f` b) foldMap :: Monoid m => (a->m)->t a->m foldMap f = foldr (mappend . f) mempty c…

loopとfix

話とかは気が向いたら書く… decList x = x:if x == 0 then [] else decList (x - 1) fix $ \f x->x:if x == 0 then [] else f (x - 1) \f x->x:if x == 0 then [] else f (x - 1) fix :: (a->a)->a loop :: a (b, d) (c, d)->a b c fix f = f $ fix f loop f…

最近普通の話を書いてなかったから書き方忘れた

数学ガール ゲーデルの不完全性定理は読み終わった。クワイン。あと論理学をつくるとRWHを気分に応じて読んでいる。そんなことをしているから読み終わる気がしない。それとセッション資料。こっちも素晴らしく進まない。あぁ、そういえば先月新しくTVキャプ…

Boost.勉強会でセッションやります

http://atnd.org/events/1839 には既に書いてありますが、Boost.Preprocessorをお題目に30分ぐらいやります。まぁ時間配分とかは全然分からないので、適当にやります。 何か当日はustでも配信されるらしいので、私の無惨な姿を見たいなら要チェケラ!

タプルの要素数を数える

世間では空前のプリプロセッサブームですね! http://codepad.org/IwJ4sqA9 C++0xの規格を眺めていると、プリプロセッサのセクションに可変長引数リスト付きマクロが入っていたので、これを使って何か面白いことができないかと考えていたところ、タプルの要…

よく分からないなりに

{-# LANGUAGE MultiParamTypeClasses, TypeFamilies, FlexibleInstances #-} data Zero = Zero data Succ n = Succ n _0 = Zero _1 = Succ _0 _2 = Succ _1 _3 = Succ _2 _4 = Succ _3 _5 = Succ _4 type family NthParamType n a :: * type instance NthPar…

フィボナッチ数列をアレする

フィボナッチ数列 fib = 0:1:zipWith (+) fib (tail fib)で、これを新しい名前を作ることなく、かつ無名関数を書かずにやってみる。まずは関数の形になおす。 fib = let fib' x y = x:fib' y (x+y) in fib' 0 1fib'のパターンを書かないように変形する。 fib…

不定期的「言語むつかしい」タイム

上のエントリ書きながら思ったんだけど、句読点多すぎても読むのにどうも詰まってしまうし、少ないと節が分かりにくくなってしまう。 だから節を入れかえたり、肯定と否定、能動と受動を逆にしたりするんだけど、そうすると、文が表わす事象は同じでも、元の…

お前がそう思うんならそうなんだろう、お前ん中ではな

(プログラム的な意味での)ある関数fがあったとして、fは内部に何事もなく処理できた場合と、そうでない、例えば引数が間違っているとか、そういう場合の処理があったとして、エラーだからどうしよう、例外でもポイしておきましょう。 function f(x) { if (…

Boost.勉強会のお知らせが来たので

C++

http://atnd.org/events/1839 http://d.hatena.ne.jp/faith_and_brave/20091015/1255594060 http://d.hatena.ne.jp/faith_and_brave/20091016/1255665216 参加しましょう。というか猛烈な速度で参加人数が増えていますが…追記:すごい勢いにつき、あっという…

会社・圏・トポス 現代的企業像を求めて

土曜日は層圏トポス米田フェスティバル@矢上祭(他の人の感想とかはこっち)に参加し、日曜日はあやしげな会合に出席するため、神奈川でお馴染みの横浜に行ってきた。 前と同じように、uskzさんと新大阪に集まることになったが、今回は無事合流できてよかった…

Imaginary Template Metaprogramming in D

D

D言語を使って脳内でメタプログラミングして遊んでみる(コンパイルできる環境が手元にないので想像)。本当にただの妄想なので、そこのところは了承してちょんまげ。 template Tuple(xs...) { alias xs Tuple; }いつの間にかPhobosから削除されていたけど、…

1から10まで足すんだって、プリプロセッサで

ネタ元:http://d.hatena.ne.jp/RiSK/20090930/1254307989 同じ方法でやっても面白くないので、なんか違うアプローチをとってみました。 #include <boost/preprocessor/repetition/repeat.hpp> #include <boost/preprocessor/repetition/repeat_from_to.hpp> #include <boost/preprocessor/seq/size.hpp>#define PAREN_I(z, n, d) BOOST_PP_REPEAT(n, PAREN_II, _) #…</boost/preprocessor/seq/size.hpp></boost/preprocessor/repetition/repeat_from_to.hpp></boost/preprocessor/repetition/repeat.hpp>

プリプロセッサでFizzBuzz

ネタ元:http://d.hatena.ne.jp/bleis-tift/20090929/1254185496 #include <boost/preprocessor/arithmetic/inc.hpp> #include <boost/preprocessor/arithmetic/mod.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/control/expr_iif.hpp> #include <boost/preprocessor/control/iif.hpp> #include <…</boost/preprocessor/control/iif.hpp></boost/preprocessor/control/expr_iif.hpp></boost/preprocessor/cat.hpp></boost/preprocessor/arithmetic/mod.hpp></boost/preprocessor/arithmetic/inc.hpp>

アヒルとあと何か見に行ってきた感想

今日一人でアヒル見にいってた。 数日前から行こうと考えてて、ようやく重い腰を上げたのが今日の夕方だっただけの話である。電車賃を一番安く上げるため、通勤で使っている定期を使って淀屋橋まで行って、そこから京阪に乗ることにした。車中のお供は、よく…

新世界行ってきた感想

いとこが来てたので、日曜日にいっしょに新世界を観光した。 新今宮の周辺は大変エキサイティングな町として知られている…けどそっちのほうではなく、まず駅のすぐ近くのスパワールドに行った。駅からだとスパワールドに行くまでに廃墟が存在するので、別に…

HAMA.jp 開催中です

人のいないところでマルチキャストしても意味ないけど、 http://atnd.org/events/1048 です!Haskellに興味のある型もない型(←わざと)も、ぜひご覧あれ!

二項演算子を前置する遊び

#include <utility> #include <tuple>namespace prefix_op {namespace detail {template<size_t N, typename T> typename std::tuple_element<N, T>::type & get_with_tuple_ref_collapsing(T & tup) { return std::get<N>(tup); } template<size_t N, typename T> typename std::tuple_element<N, T>::type && get_with_tu…</n,></size_t></n></n,></size_t></tuple></utility>

わんくま名古屋に突撃した

先週の土曜日はわんくま名古屋に行ってきた。 行きは近鉄特急で。乗ったのはアーバンライナーNextで、おばちゃんが多い。安いからいいのだけど、おばちゃんが多い。幸いなことに席が窓際だったので、車窓からの風景を楽しみながらの移動だったが、隣はおばち…

範囲つきintのガワを適当に書いてみた結果

template<int Min, int Max> struct ranged_int { ranged_int() = default; ranged_int(ranged_int const &) = default; template<int N, typename = enable_if<(N >= Min) && (N < Max)>::type> ranged_int(integral_type<int, N>) : n_(N) {}; template<int Min1, int Max1, typename = enable_if<(Min1 >= Min) && (Max1…</int></int,></int></int>