Объем памяти типов данных Haskell

Как узнать фактический объем памяти, необходимый для хранения значения некоторого типа данных в Haskell (в основном с GHC)? Можно ли оценить его во время выполнения (например, в GHCi) или можно оценить требования к памяти составного типа данных по его компонентам?

В общем, если требования к памяти типовa а такжеb Известно, какова нагрузка на память алгебраических типов данных, таких как:

data Uno = Uno a
data Due = Due a b

Например, сколько байтов в памяти занимают эти значения?

1 :: Int8
1 :: Integer
2^100 :: Integer
\x -> x + 1
(1 :: Int8, 2 :: Int8)
[1] :: [Int8]
Just (1 :: Int8)
Nothing

Я понимаю, что фактическое выделение памяти выше из-за отложенного сбора мусора. Это может значительно отличаться из-за ленивой оценки (и размер thunk не связан с размером значения). Вопрос, учитывая тип данных, сколько памяти занимает его значение при полной оценке?

Я нашел там:set +s опция в GHCi для просмотра статистики памяти, но не ясно, как оценить объем памяти одного значения.

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

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