There are a few Binarys for GHC out there; I'm not sure which one you're using, but the one I use (that compiles fine) you can grab from me at:
http://www.isi.edu/~hdaume/hnlp/Binary.hs (you'll also need hnlp/FastMutInt.lhs) > In the meantime i have a temporary version of binary but its > performance is not what i would like. Let me paste some of it > > [snip] This is certainly not the same as the one I'm using. I don't know if mine is compatible with DrIFT (or whatever the appropriate capitalization is), but it's really quite trivial to write your own instances. An instance for FiniteMap is: > instance (Ord a, Binary a, Binary b) => Binary (FiniteMap a b) where > put_ bh = put_ bh . fmToList > get bh = get bh >>= return . listToFM The most unfortunate thing I found with this version of Binary is that there's not as built in instance of Binary Double. My instance is: > instance Binary Double where > put_ bh d = put_ bh (doubleToInts d) > get bh = get bh >>= return . intsToDouble Where the appropriate (admittedly hack) definitions used in there are: > doubleToInts d = runST ( > do arr <- newDoubleArray (1,2) > writeDoubleArray arr 1 d > i1 <- readIntArray arr 1 > i2 <- readIntArray arr 2 > return (i1,i2)) > > intsToDouble (i1,i2) = runST ( > do arr <- newDoubleArray (1,2) > writeIntArray arr 1 i1 > writeIntArray arr 2 i2 > readDoubleArray arr 1) > My second question is how to optimize this piece of code. I suppose > that the main performance bottleneck is the use of hPutChar. I did some > profiling but some guidance will be really helpful. I'll let someone else take that :) _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell
