There's no "the compiler". :) There are many compilers. I don't know of any that evaluate those expressions at compile time, but it's certainly not forbidden. Nor would it be exceedingly hard to implement.
But it's not too bad to do it at run time either, because it will (most likely) only be evaluated once at run time.
-- Lennart
Suppose I write something like this:
foo :: [Int]
foo = concat (replicate 4 [4,7,2,9])
The value of "foo" is completely determined at compile-time. So, will
the compiler generate calls to concat and replicate, or will it just
insert a large list constant here?
Obviously, once somebody has completely examined the contents of "foo",
after that point it won't matter either way. I'm just curiose.
Concatinating some strings is cheap; I sometimes write constructs like
the above using much more expensive operations. (Expensive in time; the
space taken up by the result isn't that great.)
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe