
Hi Bulat! On Aug 24, 2006, at 1:07 PM, Bulat Ziganshin wrote:
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
Alas, at the moment the last gives (in ghc-6.4.2), Unexpected strictness annotation: !TagState In the data type declaration for `Tag' Failed, modules loaded: none. Prelude>
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
I will look at this. Thanks! Best Wishes, Greg
-- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe