Hello Brian,

Thursday, August 24, 2006, 4:16:41 PM, you wrote:

> I would make all the fields strict here, to be sure that no lazyness can
> creep about unseen eg:

>      data Tag s = Tag {
>          tagID :: !Int,
>          state :: !(STRef s TagState),
>          count :: !(STRef s Integer)
>    }

perhaps better:

      data Tag s = Tag {
          tagID :: !Int,
          state :: STRef s !TagState,
          count :: STRef s !Integer
    }

although i don't even sure that this will compile (in this case we can
request it as wishful feature). in theory, this should allow to omit
'$!' from writeRef calls

also, one can implement strict write operations:

writeRef r x = writeSTRef r $! x

or use my unboxed references (but not with Integer) -
http://haskell.org/haskellwiki/Library/ArrayRef 


-- 
Best regards,
 Bulat                            mailto:[EMAIL PROTECTED]

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to