[Haskell-cafe] Re: Language support for imperative code. Was: Re:
monad subexpressions
apfelmus
apfelmus at quantentunnel.de
Mon Aug 13 08:55:48 EDT 2007
Isaac Dupree schrieb:
> apfelmus wrote:
>> Mutable data structures in the sense of ephemeral (= not persistent =
>> update in-place) data structure indeed do introduce the need to work
>> in ST since the old version is - by definition - not available anymore.
>
> Not in the quantum/information-theoretic sense, not necessarily. Consider
>
> import Control.Monad.ST
> import Data.STRef
> main = print (runST (do
> r <- newSTRef 1
> notUnavailable <- readSTRef r
> writeSTRef r 5
> return notUnavailable
> ))
I'm not sure what this has to do with quantum mechanics ;) but you're
right, I forgot that. This means that either STRefs cannot be updated
in-place or that every read operation copies the contents or something
like that.
In any case, simple values like Ints or Bools are rather uninteresting,
update in-place is only important for larger structures like arrays.
Here, ST does updates in-place and retaining an array will copy it.
Regards,
apfelmus
More information about the Haskell-Cafe
mailing list