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⑈