Neil Mitchell wrote:
Hi

Top-level unboxed values would then
behave just like #define constants, in fact.  This is certainly possible,
it would just add complexity to the compiler in various places.

Yes, that was all I was thinking of. I'm not suggesting that these
things actually get implemented, but it did seem a strange restriction
that it would have been impossible to define something like realWorld#
in Haskell without baking it into the compiler.

What would you expect to happen for this?

fib :: Int -> Int#
fib n = ...

x :: Int#
x = fib 100#


'x' cannot be bound to a thunk.  So the top-level computation would have to be 
evaluated eagerly.  But when?  Perhaps when the program starts?

Yes, when the program starts seems perfectly sensible - and mirrors
what happens in C, I believe.

IIRC, C only allows compile-time constants (such as 1+1), and C++ has the behavior you describe (non-constants computed at load time - which is criticized for nondeterministic order, slow loading having to go through many areas of memory...)
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to