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

On Nov 17, 2007 4:01 PM, Andrew Coppin <[EMAIL PROTECTED]> wrote:

> 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
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to