Gregory Wright wrote:
-- A structure with internal state:
--
data Tag s = Tag {
tagID :: Int,
state :: STRef s TagState,
count :: STRef s Integer
}
data FrozenTag = FrozenTag {
ft_tagID :: Int,
ft_state :: TagState,
ft_count :: Integer
} deriving Show
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)
}
-- ditto for FrozenTag
(And use (writeSTRef ref $! value) as others have suggested)
Regards, Brian.
--
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.
http://www.metamilk.com
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe