タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

programmingとC++とprogramming-functionalに関するkgbuのブックマーク (3)

  • Modern C++ Design(Loki)のTypeList(これは古い日記です) - Diary(uid)

    今日の日記はModern C++ Designを読んだ人とかLoki(Modern C++ Designで解説されているライブラリ)を使ったことのある人しか意味がわからないと思うのでご了承ください。 Modern C++ Designでは、型のリスト「TypeList」を可変長に扱うため、TYPELIST_1 〜 TYPELIST_50まで、要素の数に応じたマクロを用いることで対応している。つまり、 #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, TYPELIST_2(T2, T3)> // ... #define TYPELIST_50(T1, T

    Modern C++ Design(Loki)のTypeList(これは古い日記です) - Diary(uid)
    kgbu
    kgbu 2008/10/01
    コンパイル時には、すべてのオブジェクトがimmutableなんで、関数型言語みたいな振る舞いになるってところが面白かった。[book]
  • Haskellで速いwcを書いてみよう(1) | krの日記 | スラド

    このコメントで言及されているページを見て、 Haskellのパフォーマンスチューニングというのは実際に難しいのかどうか、自分でも試してみることにしました。 お題は「Haskellで速いwcコマンドを書く」です。上記tanakh氏のページに倣い、ここで書くwcコマンドは、 いつも標準入力からのみ読む。(ファイル名の指定とかは省略) 行数、単語数、文字数を表示する。 文字はCのchar相当。(Unicodeとか複雑なことは考えない) 単語は空白区切りで数える。(punctuation等も(空白でないので)単語内の文字とする) 行数は改行文字の数を数える。(各行の最後は必ず改行で終わると仮定する) という仕様にしておきます。 なお、実行時間の測定は以下の環境で行ないました(dmesgより)。 OS:FreeBSD 6.2-STABLE CPU:Intel(R) Pentium(R) M proc

  • テンプレートメタプログラミング - Wikipedia

    出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 記事の信頼性向上にご協力をお願いいたします。(2022年9月) テンプレートメタプログラミング(英: template metaprogramming)は、メタプログラミング技法の一種であり、コンパイラがテンプレートを使って一時的ソースコードを生成し、それを他のソースコードと結合してコンパイルする方式である。テンプレートが出力するものは、コンパイル時の定数、データ構造、関数定義などがある。テンプレートの利用は言わばコンパイル時の実行である。この技法は様々な言語で使われている(C++、D言語、Eiffel、Haskell、ML、XLなど)。 メタプログラミング手法としてのテンプレート利用には2段階の操作が必要である。まずテンプレートを定義し、次にそれをインスタンス化しなければならない。テンプレートは生成す

    kgbu
    kgbu 2007/10/05
    コンパイル時の定数計算やテンプレートのインスタンス化が関数型言語というか参照透明性のある言語の実行モデルと似ているという話もある
  • 1