From: Natacha Kerensikova <lithiumcat@gmail.com>
Subject: Re: S-expression I/O in Ada
Date: Sun, 1 Aug 2010 13:06:10 -0700 (PDT)
Date: 2010-08-01T13:06:10-07:00 [thread overview]
Message-ID: <984db477-973c-4a66-9bf6-e5348c9b95f2@n19g2000prf.googlegroups.com> (raw)
In-Reply-To: 258zlxrv4fn6.1vszho1rtmf48$.dlg@40tude.net
On Aug 1, 8:49 pm, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
wrote:
> On Sun, 1 Aug 2010 10:35:17 -0700 (PDT), Natacha Kerensikova wrote:
> > On Aug 1, 2:53 pm, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> > wrote:
> >> How can it make sense if the type is unknown? If the type is known, why not
> >> to state it?
>
> > Actually the type is deduced from the context, e.g.
> > (tcp-connect (host foo.example) (port 80))
>
> Hmm, why do you consider brackets as separate elements?
Because that's the definition of S-expressions :-)
I'm referring to this almost-RFC: http://people.csail.mit.edu/rivest/Sexp.txt
> I mean, more natural would be "procedural":
>
> tcp-connect (host (foo.example), port (80))
>
> or
>
> tcp-connect (foo.example, 80)
Those are also perfectly valid ways of serializing the same
information, but they are simply not S-expressions.
I use S-expression as a sort of universal text-based container, just
like most people use XML these days, except S-expressions can easily
embed binary data and they are greatly simpler (as I said, ~1000 lines
of commented 80-column C code with a few reinvented wheels embedded).
> > This means that as far as the S-expression library is concerned, the byte
> > sequence read from the file is not typed. Its typing actually has to be
> > delayed until the application has enough context to interpret it. Hence
> > the need of a typeless chunk of data.
>
> The above is mere syntax, it is not clear why internal/external
> representation must be as you described. (Actually, the structures as above
> are widely used in compiler construction e.g. syntax tree, Reverse Polish
> notation etc.)
>
> There is no such thing as untyped data. The information about the type must
> be somewhere. In your example it could be:
>
> type Connect is new Abstract_Node with record
> Host : IP_Address;
> Port : Port_Type;
> end record;
It is indeed somewhere, but beyond the reach of a S-expression
library: its belongs to the application using the library. The record
you show here can't be part of a generic S-expression handling
library.
In my example, as far as the S-expression library is concerned, it
looks like:
"(<some_stuff_1> (<some_stuff_2> <some_stuff_3>) (<some_stuff_4>
<some_stuff_5>))"
The library is not supposed to care about what those some_stuff_ are.
Actually, the library is suppose to get binary data from the
application along with the tree structure described above, store it
into a sequence of bytes (on a disk or over a network or whatever),
and to retrieve from the byte sequence the original tree structure
along with the binary data provided.
But now that I think about it, I'm wondering whether I'm stuck in my C
way of thinking and trying to apply it to Ada. Am I missing an Ada way
of storing structured data in a text-based way?
> > I thought this was the strong type safety to prevent (de)serialization
> > procedure from trying to interpret just any chunk of memory.
>
> No, actually it eases serialization because you can define
> Serialize/Unserialize operations on the type.
I honestly don't understand what you mean here.
Am I misusing the word "serialization" to describe the process of
converting an object from an internal representation (e.g. an integer)
to a byte sequence (e.g. the ASCII string of its decimal
representation, or the byte sequence in memory, both of them being two
acceptable but different serializations, corresponding to different
trade-offs (portability and readability vs space and time
efficiency))?
Thanks for making me think,
Natacha
next prev parent reply other threads:[~2010-08-01 20:06 UTC|newest]
Thread overview: 252+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-01 12:17 S-expression I/O in Ada Natacha Kerensikova
2010-08-01 12:53 ` Dmitry A. Kazakov
2010-08-01 17:35 ` Natacha Kerensikova
2010-08-01 18:49 ` Dmitry A. Kazakov
2010-08-01 20:06 ` Natacha Kerensikova [this message]
2010-08-01 21:13 ` Dmitry A. Kazakov
2010-08-02 7:17 ` Georg Bauhaus
2010-08-02 7:58 ` Dmitry A. Kazakov
2010-08-07 7:23 ` Natacha Kerensikova
2010-08-07 8:39 ` Dmitry A. Kazakov
2010-08-07 12:56 ` Natacha Kerensikova
2010-08-07 14:23 ` Dmitry A. Kazakov
2010-08-08 12:23 ` Natacha Kerensikova
2010-08-08 13:01 ` Dmitry A. Kazakov
2010-08-08 13:49 ` Natacha Kerensikova
2010-08-08 15:15 ` Dmitry A. Kazakov
2010-08-09 9:55 ` Natacha Kerensikova
2010-08-09 10:56 ` Dmitry A. Kazakov
2010-08-10 8:56 ` Natacha Kerensikova
2010-08-10 10:17 ` Georg Bauhaus
2010-08-10 10:36 ` Dmitry A. Kazakov
2010-08-10 12:06 ` Natacha Kerensikova
2010-08-10 15:46 ` Dmitry A. Kazakov
2010-08-10 21:22 ` Simon Wright
2010-08-11 7:37 ` Dmitry A. Kazakov
2010-08-11 17:32 ` Simon Wright
2010-08-11 17:53 ` Dmitry A. Kazakov
2010-08-11 9:43 ` Natacha Kerensikova
2010-08-11 10:37 ` Dmitry A. Kazakov
2010-08-11 11:38 ` Natacha Kerensikova
2010-08-11 12:58 ` Robert A Duff
2010-08-11 15:30 ` Natacha Kerensikova
2010-08-11 23:39 ` Randy Brukardt
2010-08-12 1:31 ` Robert A Duff
2010-08-12 8:53 ` Natacha Porté
2010-08-12 9:22 ` Georg Bauhaus
2010-08-13 9:43 ` Natacha Kerensikova
2010-08-10 21:56 ` Randy Brukardt
2010-08-09 15:40 ` Simon Wright
2010-08-09 16:35 ` Robert A Duff
2010-08-10 0:51 ` Randy Brukardt
2010-08-10 1:00 ` Jeffrey Carter
2010-08-10 21:36 ` Randy Brukardt
2010-08-10 22:24 ` Jeffrey Carter
2010-08-10 12:50 ` Robert A Duff
2010-08-10 22:06 ` Randy Brukardt
2010-08-09 18:37 ` Natacha Kerensikova
2010-08-09 19:10 ` Robert A Duff
2010-08-08 14:08 ` Duke Normandin
2010-08-08 15:34 ` Robert A Duff
2010-08-08 18:24 ` Dmitry A. Kazakov
2010-08-08 20:03 ` Robert A Duff
2010-08-08 20:39 ` Dmitry A. Kazakov
2010-08-08 21:08 ` Robert A Duff
2010-08-09 6:50 ` Dmitry A. Kazakov
2010-08-09 13:48 ` Robert A Duff
2010-08-09 14:38 ` Dmitry A. Kazakov
2010-08-09 15:14 ` Georg Bauhaus
2010-08-09 16:11 ` Dmitry A. Kazakov
2010-08-09 16:46 ` Georg Bauhaus
2010-08-09 17:05 ` Robert A Duff
2010-08-09 18:29 ` Georg Bauhaus
2010-08-09 19:18 ` Robert A Duff
2010-08-10 8:21 ` Georg Bauhaus
2010-08-09 20:40 ` Dmitry A. Kazakov
2010-08-09 22:21 ` Georg Bauhaus
2010-08-10 7:07 ` Dmitry A. Kazakov
2010-08-09 16:47 ` Robert A Duff
2010-08-09 19:59 ` Dmitry A. Kazakov
2010-08-09 21:34 ` Robert A Duff
2010-08-09 22:29 ` Jeffrey Carter
2010-08-10 7:48 ` Dmitry A. Kazakov
2010-08-09 21:54 ` _FrnchFrgg_
2010-08-09 22:32 ` Georg Bauhaus
2010-08-10 7:16 ` Dmitry A. Kazakov
2010-08-10 11:06 ` _FrnchFrgg_
2010-08-10 11:19 ` Dmitry A. Kazakov
2010-08-10 23:04 ` _FrnchFrgg_
2010-08-11 14:10 ` Dmitry A. Kazakov
2010-08-11 17:51 ` Structural unification (pattern matching) in Ada [was: Re: S-expression I/O in Ada] _FrnchFrgg_
2010-08-11 18:06 ` Dmitry A. Kazakov
2010-08-11 19:43 ` Robert A Duff
2010-08-11 20:26 ` (see below)
2010-08-11 21:21 ` Structural unification (pattern matching) in Ada Simon Wright
2010-08-12 12:43 ` Structural unification (pattern matching) in Ada [was: Re: S-expression I/O in Ada] _FrnchFrgg_
2010-08-10 1:06 ` S-expression I/O in Ada Randy Brukardt
2010-08-09 16:50 ` Robert A Duff
2010-08-09 18:32 ` Natacha Kerensikova
2010-08-09 19:06 ` Jeffrey Carter
2010-08-09 19:24 ` Robert A Duff
2010-08-09 19:35 ` (see below)
2010-08-09 17:00 ` Robert A Duff
2010-08-09 20:27 ` Dmitry A. Kazakov
2010-08-09 21:30 ` Robert A Duff
2010-08-10 1:17 ` Randy Brukardt
2010-08-10 6:48 ` Dmitry A. Kazakov
2010-08-10 21:42 ` Randy Brukardt
2010-08-11 8:02 ` Dmitry A. Kazakov
2010-08-11 23:18 ` Randy Brukardt
2010-08-12 6:20 ` Dmitry A. Kazakov
2010-08-12 20:56 ` Randy Brukardt
2010-08-13 6:56 ` Dmitry A. Kazakov
2010-08-14 0:52 ` Randy Brukardt
2010-08-09 18:55 ` Jeffrey Carter
2010-08-09 18:20 ` Natacha Kerensikova
2010-08-09 19:19 ` Robert A Duff
2010-08-07 15:38 ` Jeffrey Carter
2010-08-07 17:01 ` Natacha Kerensikova
2010-08-08 6:52 ` Jeffrey Carter
2010-08-08 13:11 ` Natacha Kerensikova
2010-08-08 15:24 ` Robert A Duff
2010-08-09 18:00 ` Natacha Kerensikova
2010-08-09 18:09 ` Robert A Duff
2010-08-08 20:34 ` Jeffrey Carter
2010-08-09 18:10 ` Natacha Kerensikova
2010-08-08 10:26 ` Simon Wright
2010-08-08 11:44 ` Dmitry A. Kazakov
2010-08-08 11:48 ` Dmitry A. Kazakov
2010-08-08 14:05 ` Natacha Kerensikova
2010-08-08 20:11 ` Jeffrey Carter
2010-08-14 1:02 ` Yannick Duchêne (Hibou57)
2010-08-14 9:53 ` Georg Bauhaus
2010-08-14 11:32 ` Natacha Kerensikova
2010-08-01 22:03 ` Simon Wright
2010-08-02 17:08 ` Pascal Obry
2010-08-02 19:08 ` Simon Wright
2010-08-01 16:01 ` Ludovic Brenta
2010-08-09 18:49 ` Ludovic Brenta
2010-08-09 19:59 ` Natacha Kerensikova
2010-08-10 0:11 ` Ludovic Brenta
2010-08-10 0:57 ` Jeffrey Carter
2010-08-10 6:47 ` Natacha Kerensikova
2010-08-10 18:13 ` Jeffrey Carter
2010-08-12 9:26 ` Natacha Kerensikova
2010-08-12 10:55 ` Ludovic Brenta
2010-08-12 12:16 ` Natacha Kerensikova
2010-08-12 12:46 ` Ludovic Brenta
2010-08-12 13:23 ` Natacha Kerensikova
2010-08-12 16:19 ` Ludovic Brenta
2010-08-12 17:17 ` Natacha Kerensikova
2010-08-12 18:51 ` Jeffrey Carter
2010-08-13 9:32 ` Natacha Kerensikova
2010-08-13 15:52 ` Ludovic Brenta
2010-08-13 22:53 ` Jeffrey R. Carter
2010-08-14 11:10 ` Natacha Kerensikova
2010-08-10 15:48 ` Ludovic Brenta
2010-08-10 15:59 ` Georg Bauhaus
2010-08-12 7:53 ` Ludovic Brenta
2010-08-12 18:55 ` Jeffrey Carter
2010-08-12 19:59 ` Ludovic Brenta
2010-08-12 20:23 ` Natacha Kerensikova
2010-08-12 20:45 ` Ludovic Brenta
2010-08-13 8:24 ` Natacha Kerensikova
2010-08-13 9:08 ` Ludovic Brenta
2010-08-14 10:27 ` Natacha Kerensikova
2010-08-14 11:11 ` Ludovic Brenta
2010-08-14 12:17 ` Natasha Kerensikova
2010-08-14 13:13 ` Ludovic Brenta
2010-08-14 13:33 ` Yannick Duchêne (Hibou57)
2010-08-12 22:25 ` Jeffrey R. Carter
2010-08-13 9:10 ` Natacha Kerensikova
2010-08-13 9:51 ` Dmitry A. Kazakov
2010-08-14 10:36 ` Natacha Kerensikova
2010-08-14 10:57 ` Dmitry A. Kazakov
2010-08-13 19:23 ` Jeffrey Carter
2010-08-13 19:42 ` Dmitry A. Kazakov
2010-08-13 20:44 ` Yannick Duchêne (Hibou57)
2010-08-14 0:57 ` Randy Brukardt
2010-08-14 10:47 ` Natacha Kerensikova
2010-08-13 19:36 ` Simon Wright
2010-08-12 20:11 ` Natacha Kerensikova
2010-08-12 20:22 ` Ludovic Brenta
2010-08-01 18:25 ` Jeffrey Carter
2010-08-01 19:43 ` Natacha Kerensikova
2010-08-01 19:53 ` Ludovic Brenta
2010-08-01 20:00 ` Dmitry A. Kazakov
2010-08-01 20:03 ` Jeffrey Carter
2010-08-01 20:34 ` Georg Bauhaus
2010-08-01 20:44 ` Georg Bauhaus
2010-08-01 21:01 ` anon
2010-08-12 23:26 ` Shark8
2010-08-13 2:31 ` Shark8
2010-08-13 8:56 ` Natacha Kerensikova
2010-08-13 10:30 ` Georg Bauhaus
2010-08-13 15:58 ` Shark8
2010-08-13 21:48 ` Shark8
2010-08-14 11:02 ` Natacha Kerensikova
2010-08-17 17:01 ` Natasha Kerensikova
2010-08-17 19:00 ` Jeffrey Carter
2010-08-18 10:49 ` Natasha Kerensikova
2010-08-18 11:14 ` Ludovic Brenta
2010-08-18 11:59 ` Natasha Kerensikova
2010-08-18 12:31 ` Ludovic Brenta
2010-08-18 13:16 ` J-P. Rosen
2010-08-18 13:55 ` Natasha Kerensikova
2010-08-18 14:40 ` J-P. Rosen
2010-08-20 20:50 ` Yannick Duchêne (Hibou57)
2010-08-18 15:07 ` Ludovic Brenta
2010-08-19 7:42 ` Natasha Kerensikova
2010-08-18 12:51 ` Georg Bauhaus
2010-08-18 13:24 ` Natasha Kerensikova
2010-08-18 14:40 ` Georg Bauhaus
2010-08-18 23:50 ` Randy Brukardt
2010-08-18 11:22 ` Georg Bauhaus
2010-08-18 12:02 ` Natasha Kerensikova
2010-08-20 21:04 ` Yannick Duchêne (Hibou57)
2010-08-22 10:21 ` Natasha Kerensikova
2010-08-22 10:28 ` Simon Wright
2010-08-22 17:13 ` Jeffrey Carter
2010-08-22 14:06 ` Dmitry A. Kazakov
2010-08-21 19:36 ` Yannick Duchêne (Hibou57)
2010-08-18 18:08 ` Jeffrey Carter
2010-08-19 8:09 ` Natasha Kerensikova
2010-08-19 10:16 ` Natasha Kerensikova
2010-08-19 10:42 ` Dmitry A. Kazakov
2010-08-22 10:24 ` Natasha Kerensikova
2010-08-22 14:10 ` Dmitry A. Kazakov
2010-08-19 18:07 ` Jeffrey Carter
2010-08-22 10:43 ` Natasha Kerensikova
2010-08-22 17:17 ` Jeffrey Carter
2010-08-19 17:59 ` Jeffrey Carter
2010-08-22 10:45 ` Natasha Kerensikova
2010-08-22 17:20 ` Jeffrey Carter
2010-08-24 11:41 ` Natasha Kerensikova
2010-08-25 1:56 ` Jeffrey Carter
2010-08-25 12:18 ` Natasha Kerensikova
2010-08-25 14:07 ` Jeffrey Carter
2010-08-25 8:06 ` Georg Bauhaus
2010-08-25 13:27 ` Natasha Kerensikova
2010-08-25 18:55 ` Simon Wright
2010-08-25 19:19 ` Georg Bauhaus
2010-08-25 19:23 ` Georg Bauhaus
2010-08-25 22:38 ` Simon Wright
2010-08-25 23:55 ` Georg Bauhaus
2010-08-27 13:19 ` Natasha Kerensikova
2010-08-27 14:57 ` Georg Bauhaus
2010-08-29 10:45 ` Natasha Kerensikova
2010-08-29 13:10 ` Simon Wright
2010-08-29 14:21 ` Natasha Kerensikova
2010-08-29 14:30 ` Niklas Holsti
2010-08-29 13:23 ` Robert A Duff
2010-08-29 13:57 ` Jeffrey Carter
2010-08-29 14:18 ` Britt Snodgrass
2010-08-29 14:29 ` Natasha Kerensikova
2010-08-29 15:12 ` Robert A Duff
2010-09-03 21:52 ` Randy Brukardt
2010-08-29 13:56 ` Jeffrey Carter
2010-08-29 14:34 ` Natasha Kerensikova
2010-08-29 14:55 ` Dmitry A. Kazakov
2010-08-29 15:25 ` Robert A Duff
2010-08-29 18:50 ` Georg Bauhaus
2010-08-29 21:43 ` Simon Wright
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox