C++

(私が C++ プログラマだということに一応の合意をしていただけると仮定した上で) ある C++ プログラマから見た Garbage Collection の理解

C++

少なくとも自分は, C++ でプログラムを組むなら,生成したオブジェクトは必ず責任を持って破壊することを徹底しているし,確保したヒープは責任を持って OS さんにお返しすることを徹底している.これは C++ の基本中の基本だというのが自分の考え.だから …

オブジェクトの同一性ってそこまで重要なものなのかな?っていう.この重要性がいまだに自分にはピンとこない. C++ で書いている人なので値の同一性以上のものが本質的に必要になるときってあるの?みたいな. #あー,そりゃ必要になるときが当然あるにゃ…

Douglas Gregor による C++0x の Concept についての talk

うっはーーー!!!. こういう専門家の話を聞きたかったのだ!だだだ!わーい!わーい!

強い typedef (opaque typedef) が欲しい理由

あれがあると,テンプレート絡みのコンパイルエラーやテンプレートライブラリを多用した実行ファイルの gprof の結果がもうちょっとヒトに優しいものになるんじゃねーか,ってゆ〜. ちなみに,前者は concept による type check だけでは不満な場合があるは…

Lanczos approximation - ガンマ関数の数値計算

忘れないうちに書いておこう. http://d.hatena.ne.jp/Cryolite/20061121#p1 どうもガンマ関数の数値計算には Lanczos 近似というものを使うみたいだにゃ.希望する多倍長精度への拡張も (誤差評価含めて) 簡単そうでい〜感じ.

compile-time reflection 欲しい

C++

compile-time reflection とゆ〜か, reflective meta-programming とゆ〜か, introspection とゆ〜か,その手の強力なものが欲しいにゃー. とにかく識別子 (名前) とかもガンガン meta-programming の対象にしたいしたいしたい.

C++0x の concept の特色の1つは非侵入的 (non-intrusive) であることじゃないか,ってゆ〜

今提案されている C++0x に向けての concept の提案が,いわゆる Java とかの Generics と決定的に違う部分の1つとして, C++0x の concept の場合, concept に関する宣言 (制約の充足の記述) が対象のクラスのクラス定義と独立した位置に記述できる (クラ…

nominal な concept の充足を半自動で伝播するよ〜な,なんかそんな感じ

http://d.hatena.ne.jp/Cryolite/20061222 なんで俺こんな血迷ったこと書いたんでしょうか?ちゃんと徹底的に調べて書けよヴぉけって感じ. 現在提案されている concept の仕様では,ある型が concept の要求を充足するかどうかを構造的に判定するか宣言的に…

ConceptGCC で遊びましょ♪

っつーか, C++0x で遊び倒すなら ConceptGCC の方がえーんちゃうん?ってゆー. SVN リポジトリのヤツだと concept 他, decltype, rvalue reference, variadic templates がすでに merge されててえらいことになってるし (参考). x86-64 だとコンパイルこ…

右辺値参照と move semantics の introduction

はわわ〜. でも, string の + だと (文字列長が毎回変化するので) 結局毎回 allocation かかって move の良さは顕著には現れないよ〜な.やっぱ std::vector とか, move が使えるアルゴリズムとか,マルチスレッドプログラミングでのインタフェースデザイ…

C++0x の concept は nominal だよ

あ〜,なんで自分の nominal と structural の理解 (そしてなんでみんなが書いてる nominal / structuaral という言葉の使い方) に違和感があるか分かったような気がする.あ,いや,どうでしょう. あれなんですよ. C++0x の (現在の) concept の提案とい…

Scoped Concept Maps と domain tag による look up 選択

ほぼ,自分用のメモなのであまり気にしないでください. 現行の concept の提案は,ある型に対するあるコンセプトの concept map の定義をグローバルに1つだけ許すことしか想定していないので,誰かが concept map を定義してしまうとグローバルにその影響が…

決意

C++

つーわけで, Move Semantics, Concept (Constrained Templates, Concept-based Overload Resolution / Specialization, Concept Maps) あたりは一度本気で説明を書こうと決意したけれど,決意した次の日には決意が鈍っていたりしてうにょにょにょにょ.

言語雑談会2006

なぜか shinh さんにお誘いいただいて言語雑談会2006に行ってきました.っていうか行ってました.これ書くのに何日かかっているんだよ,俺,ってゆ〜. NumerleNemerle 良いなぁ.あのレベルの metaprogramming 能力ふつーに欲しいよなぁ, metaprogramming …

ちょっと混乱してきた

あれ?上のアナロジーに従ったとき, LISP における「そのスコープ内に関数定義を持った関数」って C++ の側ではどーなるんだ?「そのスコープ内に型定義を持った型」?それよ〜するにネストしたクラス定義を持つクラス?

Compile-time Garbage Collection

つまりですねぇ,型をあるスコープ内で定義して,かつその型をそのスコープの外に返せるようにするには, (upward funarg problem を解決するために) LISP 同様 compile-time GC が要るんじゃないのかなぁ〜,なんてめがっさ思わないっかなー? ま〜,全部グ…

Two-phase Name Lookup と Environment Problem

C++ LISP (LISP だけじゃないけれど) テンプレート定義 引数として関数を受ける関数の定義 テンプレート定義内の依存名 関数内の自由変数名 依存名が実際に指しているもの 自由変数が実際に指しているもの 型 関数 テンプレートの Point of Definition 関数…

non-intrusive で ad hoc な interface 定義の導入

C++

ある既存のクラスに対して,翻訳単位あるいは lexical scope 単位で ad hoc に non-intrusive な mixi-in らしきもの (インタフェースとなる free-standing 関数定義の追加) ができたら良いなぁと思った今日この頃. C++ だとほぼ事実上不可能な感じ.不可能…

コメント欄の展開は見落とすことがあるから困る

http://d.hatena.ne.jp/shinichiro_h/20061203#c1165243132 あっぶねー.危うくこの「うっはー!!」なコメントのやり取り見落とすところだった. http://d.hatena.ne.jp/shinichiro_h/20061205#c1165299259 こっちのコメントのやり取りも「うっはー!…………う…

scanl で作る自然対数への (無限) 遅延リスト in C++

scanl 相当を実装したので適当に遊んでみるテスト. http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/*checkout*/cradle/cradle/libs/range/test/integration/lazy_list_to_exp_utf.cpp?content-type=text%2Fplain MSVC7.1, 8.0, GCC4.0.x, 4.1.x でテスト済…

Pipable Function 導入しよう,そうしよう

よし,決めた. Range View を Pipable Function として汎化する設計は極めて魅力 Range View と object generator の2足のわらじを履かせるのは責任の分離云々から見てまずい.っていうか view::sort() で良いじゃん. という理由の下に, Pipable Function…

Pipable Function / Pipable Lambda

http://d.hatena.ne.jp/mb2sync/20061205#p1 これ以前導入しようとしたけれども, lambda functor と組み合わせたときに, lambda functor としての operator| か pipable function の operator| かが曖昧になるから回避してたにゃあ.でも,今よくよく考え…

iterating_range

みょみょみょ.あくまで自分向けのメモな段階でのドキュメント. http://cradle.sourceforge.jp/doc/range/iterating.html 一応,暫定で仕上げた take_while と組み合わせて, http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/*checkout*/cradle/cradle/libs…

Cradle ぷろじぇくと

っていうかちゃんと書くの忘れていたような気がしますが, Cradle というプロジェクトを sourceforge.jp に立てています.完全に自分の遊び場と化しています.えぇんかな,こういう使い方.いや,遊び場にするつもりで立てたわけじゃないけれど. cvs -d :ps…

簡易 lambda 表記のための実装

っていうことでなんか思い立ったが吉日,半日ぐらいかけて,既存の関数オブジェクトに対して bind 不要の部分引数束縛・関数合成の構文を可能にするアダプタを書いてみました的な. http://d.hatena.ne.jp/Cryolite/20050516#p1 を (本人的には) 劇的に改良…

Phoenix 使えそうにない

あ,やっぱ Phoenix ダメじゃん.なんで Phoenix をまともに追ってなかったか思い出した.

でした

だいたい Phoenix でした……orz

っていうか

っていうかそれは Phoenix ではないのだろうか?

簡易 lambda 記法 - bind を用いない部分評価・関数合成,っていうか bind 嫌い嫌いだいっきらいっ!

昔っからずっと思っておりましたんですが,ばいんどきらい. bind( plus, _1, 1 );ほらもうきらいきらいだいっきらい.ばいんどしんぢゃえ. plus( _1, 1 );こう書きたい.めがっさ可読性上昇.ほら,こんな書き方ができたら,あなたも今日から初めてみよう…

C++ の range で iterate 相当のことがしたいときの value_type

C++ で iterate 相当の機能を提供する range の value_type はどうすれば良いのでしょうねぇ,という思関数期特有なお悩み. C++ の場合,関数として多相関数オブジェクトが指定できる (し,実際そういうものを指定したい) 上に,関数が ad-hoc な多相性を発…