[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