[Haskell-cafe] broken IO support in uvector package, when
using non primitive types
dons at galois.com
Fri Mar 13 18:53:53 EDT 2009
> Daniel Fischer ha scritto:
>> Worked with uvector-0.1.0.1:
>> But not with uvector-0.2
> > [...]
> The main difference is that in uvector 0.2, hPutBU does not write in the
> file the length of the array; hGetBU simply use the file size.
> let elemSize = sizeBU 1 (undefined :: e)
> n <- fmap ((`div`elemSize) . fromInteger) $ hFileSize h
> So, the problem seems to be here.
> This simply don't support having two arrays written in the same file,
> and sizeBU belongs to the UAE class, whose instances are only declared
> for builtin types.
> So, the patch is: "just revert this change".
Or... use your own UIO instance. That's why it's a type class!
Anyway, for the background on this:
Tue Nov 18 08:44:46 PST 2008 Malcolm Wallace
* Use hFileSize to determine arraysize, rather than encoding it in the
"Here is a patch to the uvector library that fixes hGetBU and hPutBU to
use the filesize to determine arraysize, rather than encoding it within
the file. I guess the disadvantages are that now only one array can
live in a file, and the given Handle must indeed be a file, not a socket
Handle. But the advantage is that one can read packed raw datafiles
Still, again, I'd point out that uvector is alpha, APIs can and will
More information about the Haskell-Cafe