Предположим, что я создал тип следующим образом:
data RequestAck =
RequestAck { ackOK :: Word32, ackMsgCode :: Word32 }
Я вижу, что это 2 * 4 байта большой и сделать что-то постоянным.
Единственные проблемы в том, что, как только я добавлю поле в тип, мне нужно будет запомнить обновленную константу.
Есть ли функция, которая предоставит мне размер определенного типа, например, t -> Int
?
Функция, которая приближается к тому, что я хочу,
gsize :: Data a => a -> Int
внутри модуля Data.Generics.Schemes, но я не хочу, чтобы мой тип был экземпляром Data
.
Существует ли более общее решение?
Конечно, я ищу функцию, которая работает с статическим типом, например, я не хочу передавать экземпляр, но сам тип.