ブックマーク / naohaq.github.io (1)

  • ポインタを使ったデータ構造を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 と同じ構造を定義してみまし

  • 1