On 10/10/06, Joel VanderWerf <vjoel / path.berkeley.edu> wrote:
> How does it compare with amarshal?
>
> http://raa.ruby-lang.org/project/amarshal/

Both are ruby-based serialization packages/languages. Amarshal
generates imperative code, tho, whereas in Ron I've tried to take a
purely declarative approach.
For instance the amarshal representation of [1,2,3] (taken from the website) is:

  v = []
  v[0] = Array.allocate()
  v[0] << 1
  v[0] << 2
  v[0] << 3
  v[0]

In Ron, it's merely: "[1,2,3]". A more interesting example would be a
recursive data structure, say an array containing itself. Here's
amarshal (extrapolating , haven't tried this):

  v = []
  v[0] = Array.allocate()
  v[0] << v[0]
  v[0]

Versus Ron:

  Recursive(v1_={}, [v1_])


Since this is essentially a declarative problem, my declarative syntax
should be shorter and (hopefully) more readable in most cases.


> At first glance, the notation
>
>   K-{:a=>1, :b=>2}
>
> for a literal instance of K seems new and interesting.

Well, thanks. As to Jonas's question about this syntax, yes, it's just
a matter of defining Class#-.