Perhaps you should look at the Clean languages, which is similar to
Haskell, but has a feature called "uniqueness typing". Using the type
system, you can figure out the information that you are asking for and
as far as I know, their implementation is optimzed in the manner you
want. In fact, their whole IO system is built around that idea. Have a
look at 

http://www.cs.kun.nl/~clean/

-Peter

    ML> Now, Haskell has a garbage collector, so Haskell must know how many
    ML> pointers there are to all objects in the heap (or?). Then, if a finite map
    ML> for example only has one single pointer to it, then it ought to be all
    ML> right to modify the finite map (or whatever datastructure we are
    ML> considering), I mean really modify the map without making any copies, just
    ML> like in imperative languages. Perhaps there might be pointers to nodes
    ML> inside the tree and I guess that could complicate the matter somewhat. But
    ML> for Haskell arrays it ought to be possible to really modify the array if
    ML> it is used by only one pointer ?

    ML> Are such optimizations possible, and if they are, are they already
    ML> implemented in for example GHC ? Or am I wrong somewhere ?
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to