Re: [racket-users] serialization of math/array

2016-03-31 Thread Berthold Bäuml
Thanks, but this does not solve the problem. I would need a solution which also 
works more generally, e.g., for arrays nested in structs etc.. 

As far as I understand, the canonical way to extend serialize is to add the 
prop:serializable property to the struct representing an array. But that was 
not possible back in 2014 as Typed Racket did not fully support properties. Is 
there meanwhile a solution for such cases?

Berthold
> On 30 Mar 2016, at 17:00, Benjamin Greenman  
> wrote:
> 
> Here's one hack.
> 
> #lang racket/base
> 
> (require
>   math/array
>  (prefix-in rkt: racket/serialize))
> 
> (define secret-key 'array)
> 
> (define (serialize val)
>   (if (array? val)
> (rkt:serialize (cons secret-key (array->list val)))
> (rkt:serialize val)))
> 
> (define (deserialize val)
>   (define d (rkt:deserialize val))
>   (if (and (pair? d) (eq? secret-key (car d)))
> (list->array (cdr d))
> d))
> 
> (define arr (array #[0 1 2]))
> (serialize arr)
> (deserialize (serialize arr))
> 
> 
> (Part of the issue serializing math/array is that it represents arrays as 
> functions under the hood)
> 
> 

-- 
---
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 

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [racket-users] serialization of math/array

2016-03-30 Thread Benjamin Greenman
Here's one hack.

#lang racket/base

(require
  math/array
 (prefix-in rkt: racket/serialize))

(define secret-key 'array)

(define (serialize val)
  (if (array? val)
(rkt:serialize (cons secret-key (array->list val)))
(rkt:serialize val)))

(define (deserialize val)
  (define d (rkt:deserialize val))
  (if (and (pair? d) (eq? secret-key (car d)))
(list->array (cdr d))
d))

(define arr (array #[0 1 2]))
(serialize arr)
(deserialize (serialize arr))

(Part of the issue serializing math/array is that it represents arrays as
functions under the hood)

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.