On Thu, Jul 24, 2014 at 7:21 AM, Berthold Bäuml <berthold.bae...@dlr.de> wrote: >> De-serializing an array of numbers and then passing it to typed code >> would produce a wrapper, not a first-order check, and so would be very >> expensive. > > Even when first-order checks would be possible the cost of such a check would > be significant in our application. We wan to use > serialization/deserialization to send data between programs -- when running > on the same computer the I/O cost (local sockets) would be almost negligible. > > Would it be possible to have a typed serialization in the near future?
I think the Racket `serialize` API is likely to be higher-cost than that, even without considering Typed Racket. >> What you want is something that can tell that the untyped reference is >> dead after value is passed to typed code, so that a first-order check >> can be used. This would require something new from Racket in the form >> of a revocable reference. > > Does this also hold for immutable arrays? In this case a first-order check > should suffice in principle. Yes, for immutable arrays represented as flat data (not functions) the checks would not require wrappers. Sam > Berthold >> > >> >> On Wed, Jul 23, 2014 at 11:52 AM, Matthias Felleisen >> <matth...@ccs.neu.edu> wrote: >>> >>> Let's assume we serialize arrays of numbers, which is what I assume the >>> background to the question is. In that case, the answer isn't all that >>> obvious to me. >>> >>> >>> >>> >>> On Jul 23, 2014, at 11:47 AM, Sam Tobin-Hochstadt <sa...@cs.indiana.edu> >>> wrote: >>> >>>> That really depends what the contracts are, and if they're first-order. >>>> >>>> Sam >>>> >>>> On Wed, Jul 23, 2014 at 11:45 AM, Matthias Felleisen >>>> <matth...@ccs.neu.edu> wrote: >>>>> >>>>> Will these costs dominate the cost of I/O here? >>>>> >>>>> >>>>> On Jul 23, 2014, at 11:37 AM, Sam Tobin-Hochstadt <sa...@cs.indiana.edu> >>>>> wrote: >>>>> >>>>>> Unfortunately, I think that strategy would incur substantial overhead >>>>>> for things like serialization of large arrays. >>>>>> >>>>>> Sam >>>>>> >>>>>> On Wed, Jul 23, 2014 at 11:28 AM, Matthias Felleisen >>>>>> <matth...@ccs.neu.edu> wrote: >>>>>>> >>>>>>> On Jul 23, 2014, at 11:10 AM, Neil Toronto <neil.toro...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> On 07/16/2014 10:25 AM, Berthold Bäuml wrote: >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> will there be serialization support for math/array and math/matrix in >>>>>>>>> the near future? As far as I understand in principle it should be >>>>>>>>> possible at leas in a straight forward way as there are already the >>>>>>>>> routines array->list and list->array. >>>>>>>> >>>>>>>> Sorry it's taken so long to reply. Part of the problem is that >>>>>>>> `racket/serialize` isn't typed: >>>>>>>> >>>>>>>> #lang typed/racket >>>>>>>> >>>>>>>>> (require racket/serialize) >>>>>>>>> serialize >>>>>>>> Type Checker: missing type for identifier; >>>>>>>> consider using `require/typed' to import it >>>>>>>> identifier: serialize >>>>>>>> from module: racket/serialize in: serialize >>>>>>>> >>>>>>>> >>>>>>>> This and the fact that the array struct types are declared in Typed >>>>>>>> Racket makes adding serialization tricky at best. Also, it would only >>>>>>>> work in untyped Racket. >>>>>>>> >>>>>>>> Generally, deserializing is hard to make type-safe, and nobody has >>>>>>>> taken it up yet for Typed Racket. Occurrence typing should help, but >>>>>>>> would require `deserialize` to take a predicate argument (like the >>>>>>>> second argument to `list*->array`), which it currently doesn't do. >>>>>>> >>>>>>> >>>>>>> Lucky us. I often leave the I/O parts of my programs untyped (I write >>>>>>> either highly imprecise unchecked signatures or I don't provide types). >>>>>>> ____________________ >>>>>>> Racket Users list: >>>>>>> http://lists.racket-lang.org/users >>>>> >>> >> >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users > > -- > ----------------------------------------------------------------------- > Berthold Bäuml -- Head of Autonomous Learning Robots Lab > DLR, Robotics and Mechatronics Center (RMC) > Münchner Str. 20, D-82234 Wessling > Phone +49 8153 282489 > http://www.robotic.de/Berthold.Baeuml > > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users