Source

scheme-bert / README.markdown

scheme-bert

scheme-bert is a BERT (Binary ERlang Term) serialization library for Scheme implementations compliant to R^6RS. BERT is based on Erlang's External Term Format.

See the BERT specification at bert-rpc.org.

Instances of the following Scheme types will be automatically converted to the proper simple BERT type:

  • flonum?
  • integer? (fixnum and bignum)
  • symbol?
  • list?
  • string?
  • vector?

Instances of the following Scheme types will be automatically converted to the proper complex BERT type:

  • 'nil
  • #t
  • #f
  • hashtable?
  • time?

Installation

Installation for Racket:

$ plt-r6rs --install ./src/scheme-bert.ss

(see Installing Libraries for more info)

Usage

Issue (import (scheme-bert)) in your REPL or put this in head of your source file. You will also probably want to import some other libraries such as bytevectors.

> (define (bytes)
    (bert-encode (list 'foo 13 42 (vector 666 '() 'bar))))
> (bytes)
#"\203l\0\0\0\4d\0\3fooa\ra*h\3b\0\0\2\232jd\0\3barj"
> (bert-decode (bytes))
{foo 13 42 #(666 () bar)}
>

Caveats

Regular expressions conversion is not supported, because every Scheme comes with its own regexp implementation and I haven't found any portable library which allows one to get the source string and options of a compiled regexp.

Trivia

Please, drop me an email if you used or intend to use the library in your project ;-)

Copyright (c) 2010 Yasir M. Arsanukaev. See LICENSE for details.