假設我創建了一個類型,如下所示:如何確定Haskell中的某個類型的大小?
data RequestAck =
RequestAck { ackOK :: Word32, ackMsgCode :: Word32 }
我可以看到,它是2 * 4個字節大,使之成爲恆定的地方。
唯一的問題是,一旦我添加一個字段的類型,我不得不記得更新我的常量。
是否有一個函數可以提供給定類型的大小,如t -> Int
?
來接近我想要的功能是
gsize :: Data a => a -> Int
的Data.Generics.Schemes模塊內部,但我不希望有讓我的類型Data
一個實例。
那裏有更通用的解決方案嗎?可以肯定,我正在尋找一種對靜態類型進行操作的函數,例如,我不想傳遞一個實例,而只是類型本身。
提示:它不是2 * 4個字節大。字段被裝箱。 – 2012-02-29 02:55:02
好點。在我的情況下,我拉出單詞並將它們轉換爲最終爲2 * 4字節長度的字節串。所以,現在回想起來,因爲這個原因,對於我來說這個類型的尺寸沒有多大意義。 – 2012-02-29 03:48:49
「Haskell數據類型的內存佔用空間」:http:// stackoverflow。com/questions/3254758/memory-footprint-of-haskell-data-types,也是「如何找出GHC的數據類型的內存表示」http://stackoverflow.com/questions/6574444/how-to-find-out -ghcs-memory-representation-of-data-types – 2012-02-29 12:19:38