             { CHAR: T [ deserialize-tuple ] }
             { CHAR: W [ deserialize-wrapper ] }
             { CHAR: a [ deserialize-array ] }
-            { CHAR: c [ deserialize-complex ] }
             { CHAR: h [ deserialize-hashtable ] }
             { CHAR: m [ deserialize-negative-integer ] }
             { CHAR: n [ deserialize-false ] }

    CHAR: F write1
    double>bits serialize-cell ;

M: complex (serialize) ( obj -- )
    CHAR: c write1
    [ real-part (serialize) ]
    [ imaginary-part (serialize) ] bi ;

M: ratio (serialize) ( obj -- )
    CHAR: r write1
    [ numerator (serialize) ]
    [ denominator (serialize) ] bi ;

: serialize-seq ( obj code -- )
    [
        write1


: deserialize-float ( -- float )
    deserialize-cell bits>double ;

: (deserialize-string) ( -- string )
    deserialize-cell read utf8 decode ;
