> If I use an STRef to a record, will a new record be created
> each time I want
> to update a single field? Or can I expect GHC to optimize it
> and have the field of the record updated in place?
You'll get a new record for each update. This might not be so bad
though, depending on the number of fields in your record.
> Right now I'm using a record of STRefs, like:
> data E s = E{
> refi :: STRef s Int,
> refc :: STRef s Char
> }
>
> but it can get a little messy, since thread s propagates to
> every datatype that uses the record type in it's definition.
Here's another trick if you use this route:
data E s = E{
refi :: !STRef s Int,
refc :: !STRef s Char
}
and compile with -funbox-strict-fields. This will eliminate the boxing
of the STRefs.
Cheers,
Simon
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe