I am not sure this is actually an issue. if you are willing to use 'poke' then _nothing_ preserves referential transparency in Haskell, you can arbitrarily overwrite various parts of the heap. Of course anything that writes to memory directly is unsafe, but 'poke' is the unsafe thing here, not packCString. John -- John Meacham - ⑆repetae.net⑆john⑈