@sclv Спасибо. Я подумаю о том, что вы упомянули.

рвых, я новичок в Haskell.

Я планирую интегрировать Haskell в C для игры в реальном времени. Haskell делает логику, C делает рендеринг. Чтобы сделать это, я должен передавать огромные сложно структурированные данные (состояние игры) друг другу для каждого тика (не менее 30 раз в секунду). Таким образом, передаваемые данные должны быть легкими. Эти данные состояния могут располагаться в последовательном пространстве в памяти. Обе части Haskell и C должны иметь свободный доступ ко всем районам штатов.

В лучшем случае стоимость передачи данных может быть при копировании указателя в память. В худшем случае копирование целых данных с преобразованием.

Я читаю FFI Хаскелла (http://www.haskell.org/haskellwiki/FFICookBook#Working_with_structs) Код на Haskell выглядит явно, определяя структуру памяти.

У меня есть несколько вопросов.

Может ли Haskell явно указать расположение памяти? (для точного соответствия с структурой C)Это настоящий макет памяти? Или требуется какой-либо вид конверсии? (снижение производительности)Если Q # 2 - true, есть ли какое-то снижение производительности, когда макет памяти указан явно?Какой синтаксис#{alignment foo}? Где я могу найти документ об этом?Если я хочу передать огромные данные с наилучшей производительностью, как мне это сделать?

* Явная особенность макета памяти, о которой я сказал, это просто атрибут C # [StructLayout]. Который явно указывает позицию и размер в памяти.http://www.developerfusion.com/article/84519/mastering-structs-in-c/

Я не уверен, что в Haskell есть сопоставление лингвистической конструкции с полями структуры Си.

Ответы на вопрос(0)

Ваш ответ на вопрос