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

Reply via email to