> All Haskell compilers use pointers internally. The
> idea is that because Haskell is referentially
> transparent and side effect free, you can overwrite
> a function application with its result. For example,
>
> let
> x = [1..1000]
> in
> foo (A x) (B x)
>
> Will internally have "x" pointing to the function
> application [1..1000], when this function application
> is evaluated it will overwrite the memory cell "x"
> points to with the result. So eventually it will
> look like this:
>
> +---+---+ +---+---+
> | A | x | | B | x |
> +---+---+ +---+---+
> | |
> +---+-------+
> |
> V
> +---+---+------+
> | : | 1 | tail |---> The list 2..1000
> +---+---+------+
>
> Where each block is a memory cell and each arrow is a
> pointer.
What does it mean to have a letter ("A", "x", or a number or "tail",
etc) inside a box?
> A book that describes this a lot better is:
>
> Simon Peyton-Jones. The implementation of functional
> programming languages. Prentice-Hall, 1987
Are they always implemented that way these days?
-- J
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe