タグ

Cに関するilyaletreのブックマーク (6)

  • ポインタを使ったデータ構造をHaskellの代数的データ型と相互変換したい

    struct ST_VEC3D_LIST { double x; double y; double z; struct ST_VEC3D_LIST * next; }; というような構造体を定義してやるのが常套手段です。 要素を追加するときは next ポインタでつないでいって、リストを手繰るときは next ポインタを再帰的に参照していくことになります。リストの終端は next に NULL を代入することで表現します。 さて、このようなデータをHaskellで扱いたくなったときのことを考えます。上記のようなデータを受け取ったり返したりするCの関数をFFIで呼びたくなったとか、そういうCの関数を QuickCheck でテストしたくなったとか。 とりあえずHaskellに用意されている Foreign.Ptr を使って、struct ST_VEC3D_LIST と同じ構造を定義してみまし

    ilyaletre
    ilyaletre 2019/01/28
    ほんとだ、Fixみたいな型になるんだ。不思議。
  • Reddit - Dive into anything

  • 2016年、C言語はどう書くべきか (後編) | POSTD

    (前編はこちら: 2016年、C言語はどう書くべきか (前編) ) (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) システム依存の型 まだ「32 bitのプラットフォームでは32 bitのlong型、64 bitのプラットフォームでは64 bitのlong型がいい」という不満があるようですね。 プラットフォームに依存する2つの異なるサイズを使うため、 故意に コードを難しくすることを考えたくなければ、システム依存の型のために long を使おうとは思わないでしょう。 この状況では、プラットフォームのためにポインタ値を保持する整数型、 intptr_t を使うべきです。 モダン32-bitプラットフォームでは、 intptr_t は int32_t です。 モダン64-bitプラットフォームでは、 intptr_t は int64_t です。 int

    2016年、C言語はどう書くべきか (後編) | POSTD
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
  • Jens Gustedt, Modern C (PDF)

  • A Simple C++ Project Structure

    Jul 3, 2013 10:33 PM One of the things I need in my new job is a bunch of blazingly fast daemons to capture market information and trade data. I prototyped them in Ruby to see what comes down the line, but I have the need, the need for speed. Which means I need a UNIX C or C++ framework. So I went old-school. Retro even. Plain old C++. My favorite programmer’s editor. And the good old terminal, er

    A Simple C++ Project Structure
    ilyaletre
    ilyaletre 2018/05/03
    参考にしよう
  • 1