I want to create a fixed length circular buffer of some general type in Haskell. The items in the buffer need to be located one after another in physical memory (not linked list). I want this specific structure because it will improve the chances of all the data getting to the L2 cache on the CPU together. I have read about how Haskell allows for new data types, however it looks like types created using "data" are little more that glorified c structs with pattern matching and associated methods. Is it possible to create low level data structures like the one described above completely in Haskell.