LINUX.ORG.RU

История изменений

Исправление 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 -- для изменяемых

и клади в память сколько угодно, куда угодно в т.ч. в разделяемую.