(extend type (x) (scheme.bytes? x)
'binary)
(extend ac-literal (x) (errsafe:isa x 'binary)
scheme-t)
(extend coerce (x totype . args) (is totype 'binary)
(case (type x)
binary x
string (scheme.string->bytes/utf-8 x)
(err "Can't coerce" x type)))
(def binary (x)
(coerce x 'binary))
(extend coerce (x totype . args) (isa x 'binary)
(case totype
binary x
string (scheme.bytes->string/utf-8 x)
(err "Can't coerce" x type)))
(extend len (x) (isa x 'binary)
(scheme.bytes-length x))
This hack adds PLT Scheme’s byte strings as a “binary” type in Arc.
I suspect that having a separate data type to store binary data is going in the wrong direction for Arc, but I needed to get the byte length of a Unicode encoded string to generate a Content-Length header and this was a quick and lazy way to do that.
This hack depends on arc3.1 and scheme0.
Same as Arc.