Ketil Malde wrote:
On Tue, 2007-09-11 at 09:10 +0200, Sven Panne wrote:
foo :: Binary a => ... -> a -> ..."? This should probably mean "foo is
using some portable (de-)serialization, but doesn't care about the
actual representation",
I'm probably missing something, but:
How can the format be portable if the representation isn't unambigously
defined? And if it is unabmigously defined, what's wrong with using it
for externally defined data formats?
It's portable because it works on other machines also running that exact
version of Data.Binary, regardless of their CPU architecture (in
particular, word size or endianness). That is the precise sense of
'portable' used here.
The actual format used by Data.Binary is not explicitly described in any
standard (although in most cases it's moderately obvious, and anyone can
read the code), and it's not formally guaranteed that it will never
change in a later version (although the maintainers will no doubt try
very hard to ensure it doesn't); nor does it contain any automatic
support for version-stamping to ensure backwards compatibility in the
face of later unlooked-for format changes.
For these reasons, although it is very cool, I don't think it can be
recommended as a basis for long-term file format definitions.
(All of the above speaks of the 'high-level' Data.Binary not the
'low-level'.)
Jules
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe