История изменений
Исправление qnikst, (текущая версия) :
Блин.. вот откуда берётся привычка выдавать рассуждения на неизвестные темы, при этом не спрашивая о том, как это можно сделать.
data Foo = Foo {-# UNPACK #-} !Atype
{-# UNPACK #-} !BType
{-# UNPACK #-} !CType
так можно сделать структуру данных, которая будет лежать в памяти «пордяд», если типы AType строгие и unboxed. В принципе так можно и работать со стуктурой и класть куда хочется, но вариант не самый удобный.
instance Storable Foo where ... -- описываем как стуктура лежит в памяти
import Data.Vector.Storable as V -- для неизменяемых
import Data.Vector.Storable.Mutable as MV -- для изменяемых
и клади в память сколько угодно, куда угодно в т.ч. в разделяемую.
cast hizel, ты вроде говорил, что с haskell разметкой всё хорошо, вот смотри, специально править код не буду, чтобы видно было какой ад генерируется.
Исходная версия qnikst, :
Блин.. вот откуда берётся привычка выдавать рассуждения на неизвестные темы, при этом не спрашивая о том, как это можно сделать.
data Foo = Foo {-# UNPACK #-} !Atype
{-# UNPACK #-} !BType
{-# UNPACK #-} !CType
так можно сделать структуру данных, которая будет лежать в памяти «пордяд», если типы AType строгие и unboxed. В принципе так можно и работать со стуктурой и класть куда хочется, но вариант не самый удобный.
instance Storable Foo where ... -- описываем как стуктура лежит в памяти
import Data.Vector.Storable as V -- для неизменяемых
import Data.Vector.Storable.Mutable as MV -- для изменяемых
и клади в память сколько угодно, куда угодно в т.ч. в разделяемую.