On Tue, 30 Nov 2004, Lennart Augustsson wrote:
George Russell wrote:
I suggest you implement

hashTypeable :: Typeable -> IO Int32

And/or mkHashTypeable :: IO (Typeable -> Int32)

And/or (you'll hate this):

  mkHashTypeable :: ACIO (Typeable -> Int32)

After all, I'm sure you don't want hasTypeable / mkHashTypeable to give different answers when used twice on the same run.

Simon Peyton-Jones wrote:
The trouble is that *any* "function" can now deliver unpredictable
results.  Can I rely on the fact that
    foo :: Int -> Int
will always give the same answer given the same input.  Not any more.

Performing a dubious toplevel 'declare hashTypeable <- mkHashTypeable' hits an odd middle ground here: you can indeed rely on the fact that


  foo :: Int -> Int

will always give the same answer given the same input, anywhere in the program. It just won't necessarily give the same answer next time you run the program. No call-by-name rewrites are broken, but something is certainly strange.

--
Ian Stark                               http://www.ed.ac.uk/~stark
LFCS, School of Informatics, The University of Edinburgh, Scotland
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to