私は広告ライブラリhttp://hackage.haskell.org/package/adを使用しており、そのさまざまな機能に渡す最速のトラバーサブルを探しています。
理想的には、メモリの連続した配列を使用するデータ構造であるため、C++ の世界で数値ソルバーに渡すことができます。
私の最善の策は何ですか?
私は広告ライブラリhttp://hackage.haskell.org/package/adを使用しており、そのさまざまな機能に渡す最速のトラバーサブルを探しています。
理想的には、メモリの連続した配列を使用するデータ構造であるため、C++ の世界で数値ソルバーに渡すことができます。
私の最善の策は何ですか?
メモリの連続した配列を使用するデータ構造なので、C++ の世界で数値ソルバーに渡すことができます。
ボックス化されていない Vector 型の Storable インスタンスを使用します。
Cに渡すことができる「Storable」制約は、利用可能なデータ型を大幅に制限します。ベクトルは、非常に高速な一括操作をサポートします。別の代替手段は Repa 配列です。
ただし、ad
パッケージには Functor と Traversable が必要なため制限がありますが、これらは完全を期すためにのみ提供されており、実際にはリストにシリアル化して、traversable インスタンスを取得します。Storable は特定のボックス化されていない型にクラス制限されているため、Traversable と Storable が混在することはありません。
instance Traversable (Data.Functor.Constant a)
(ごめん!)