タグ

ブックマーク / iorate.hatenablog.com (2)

  • HaskellのIntegerをC++で使う - iorate's blog

    C++の標準には多倍長整数ライブラリがありません。これは大変なことだと思います。 まあBoost.Multiprecision来るじゃないというのはさておき、 標準の多倍長整数がないなら他言語の標準から持ってくればいいということで、HaskellのIntegerをラップしてC++の多倍長整数クラスにしてみました。 まずIntegerを扱う関数をFFIでエクスポートします。Integerを引数・戻り値にする関数はエクスポートできないので、代わりにStablePtr Integerを使います。これはIntegerオブジェクトを指すポインタで、GCに回収・再配置されない保証があります。CやC++からはただのvoid *に見えます。 とりあえずfromIntegral、(*)、showをエクスポートしました(今回は乗法と出力がしたいので)。StablePtr IntegerとCStringの解放関

    HaskellのIntegerをC++で使う - iorate's blog
  • Range を使おう - iorate's blog

    これは C++11 Advent Calendar 2011 の参加記事 (15日目) です. この記事では「Iterator ではなく Range を使おう」という話をします.既に何度も言われている話ではありますが,私も一度書いてみたかったのでこの機会に書きます.でもそんなに新しいことは言わないと思います. 話の流れとしては,従来の Iterator にはこんな欠点が → それ Range ならうまく書けるよ → さらに Range 使ってこんなこともできるよ → C++11 での Range という感じになります. 従来の Iterator の問題点 Iterator は STL の主要なコンセプトで,Container と Algorithm を橋渡しする役割を持っています. std::vector<int> v = { 8, 4, 3, 7, 6, 5, 2, 1 }; std::

    Range を使おう - iorate's blog
    s_ryuuki
    s_ryuuki 2011/12/18
  • 1