
Message: 3 Date: Thu, 11 Nov 2010 18:56:00 +0100 From: Sjoerd Visscher
On Nov 11, 2010, at 6:34 PM, John Lato wrote:
I don't know to what extent it would apply in this hypothetical situation, but ghc (and probably other compilers) rely upon Haskell's semantics in performing various code transformations. If you break the semantics some transformations become invalid, resulting in incorrect code.
I've experienced this with code that violated ref. transparency. The program behavior changed depending on the compiler's optimization settings. I'm not keen to go back to that.
Then don't do that. Being able to serialize functions is just as dangerous as having unsafePerformIO. If you don't use it, you don't have problems.
If you do use "serialize", I think it would cause problems most of the time. A pure serialization would violate referential transparency. GHC relies upon referential transparency for some transformations to be valid. Therefore it's not possible to use a pure serialization function safely unless the user can guarantee that it's only used in a referentially transparent manner, which is an extremely high barrier IMO (higher than for unsafePerformIO). John