[Haskell-cafe] Space questions about intern and sets

Gracjan Polak gracjan at acchsh.com
Fri Jun 3 04:53:53 EDT 2005


Scott Turner wrote:
 > On 2005 June 02 Thursday 04:38, Gracjan Polak wrote:
 >
 >> >>iorefset :: Ord a => IORef(Map.Map a a)
 >> >>iorefset = unsafePerformIO $ do
 >> >>     newIORef $ Map.empty
 >
 >
 >>I could have as many dictionaries as there are types. The problem is I
 >>get one dictionary for each object which defeats the idea.
 >
 >
 > To avoid unsafe operations and get control over the dictionaries that 
are
 > created, I would put the desired dictionaries into a state monad. 
The type
 > of 'intern' becomes
 >     Ord a => a -> DictionaryState a
 > All the code that uses 'intern' would need some modification to deal 
more
 > directly with the dictionary state. It may be more complex, but it's 
also
 > more solid.

As intern behaves like id and does not have any side effects, I thought 
its interface should be purely functional. But I do not see any way to 
do it :( I'll end up with a monad, probably.

In related question: does anybody here have experience/benchmarks/tests 
how/if is PackedString better (uses less memory) than String in parsing 
tasks?


-- 
Gracjan



More information about the Haskell-Cafe mailing list