
Stefan O'Rear wrote:
On Sat, Nov 17, 2007 at 04:10:58PM +0000, Andrew Coppin wrote:
OK. I presume this is due to the fact that the result of executing an expression at compile-time could be arbitrarily large?
Yes, and it's not even guaranteed to terminate.
That would be "arbitrarily large", yes. ;-)
Are there any buttons that can be twiddled to control this behaviour?
Not that I'm aware of, though you can hack something with RULEs probably.
I was just wondering whether there was some way to say "please unravel this expression until the result is X units big" or something. Oh well. (I'm sure Template Haskell could do it if you wanted it that badly... or just write a small Haskell program that writes a Haskell program. Eeps!)
For that matter, when I say "[4,7,2,9]", what does that compile into? Some data structures in memory? Or code to actually build said structures?
Both. A curious feature of the STG machine is that constructor thunks and evaluated data are represented identically in memory.
Ooo... As per the Lambdacats "Boxed cat has a uniform representation"? Well, presumably the guys who designed STG did it this way for a really good reason, and they know far more than me, so... ;-)