Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Marshalling unknown types
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: James Leifer <James.Leifer@i...>
Subject: Re: [Caml-list] Marshalling unknown types
We (Gilles Peskine, Peter Sewell, Keith Wansbrough, and I) have been
working on type safety and related questions concerned with
marshalling:

  http://pauillac.inria.fr/~leifer/articles/leifer-globas-icfp2003.ps.gz
  http://pauillac.inria.fr/~leifer/articles/leifer-marabreb.ps.gz

However, we're far from a patch to the actual Ocaml compiler right
now.  We've rather concentrated on building a prototype ML interpreter
which we can use for exploring the design space (type safety,
abstraction safety, versioning, dynamic rebinding to local resources,
etc.).

If you don't need abstraction safety, then Jun Furuse's work on safe
marshalling might interest you.  Michel Mauny might be reimplementing
this for 3.07?

Richard Jones said:

> What's needed is for someone to rewrite the marshal code to work
> safely.  However there's not enough type information available at
> runtime for this to work.  eg. [1; 2; 3] looks the same as (1, 2, 3)
> at runtime.

Well... Peter, Xavier, and I were scratching our heads at POPL two
weeks ago and said: For a really polymorphic marshal then you need to
pass some type information around at run-time or introduce user type
representations.

Of course, if you know *at compile time* that you're marshalling or
unmarshalling to an int list or an int triple, there's no problem
distinguishing between those cases (and including the right data for
doing the dynamic type check).

-James

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners