Names and primitives in SRFI 56 Hans Oesterholt-Dijkema (17 Sep 2004 21:53 UTC)
Re: Names and primitives in SRFI 56 Alex Shinn (18 Sep 2004 02:33 UTC)
Re: Names and primitives in SRFI 56 Hans Oesterholt-Dijkema (18 Sep 2004 09:53 UTC)
Re: Names and primitives in SRFI 56 bear (18 Sep 2004 19:46 UTC)
Re: Names and primitives in SRFI 56 Bradd W. Szonye (19 Sep 2004 18:08 UTC)
Re: Names and primitives in SRFI 56 bear (19 Sep 2004 19:28 UTC)
Re: Names and primitives in SRFI 56 Dave Mason (28 Sep 2004 11:36 UTC)
Re: Names and primitives in SRFI 56 Alex Shinn (28 Sep 2004 15:11 UTC)
Re: Names and primitives in SRFI 56 bear (18 Sep 2004 02:58 UTC)

Re: Names and primitives in SRFI 56 Alex Shinn 18 Sep 2004 02:33 UTC

At Fri, 17 Sep 2004 23:53:33 +0200, Hans Oesterholt-Dijkema wrote:
>
> I've some questions about the naming of primitives provided in SRFI-56.
>
> 1. Why, is the word 'binary' used in the function definitions.
>    Is it not clear from the way the types are provided, that these
>    must be binary constructs?
>
>     read-uint32 is shorter and I think evenly clear as read-binary-uint32
>
>    It would spare a lot of typing work when programming.

I had considered the former, but was trying to be as clear as
possible.  Brevity is not a strong argument, but in retrospect I'm not
sure read-binary-uint32 is any more clear than read-uint32.

> 2. Why are the network encodings provided as separate functions?
>    Why not add 'network to 'big-endian and 'little-endian?
>    It's just an other way to encode your information.

'network is equivalent to 'big-endian.  The separate procedures are
provided as shorthand for when you want to write code portable across
different endians, and also to allow for a faster implementation on
big-endian machines.  This is biased in favor of big-endian machines;
an alternative would be to have three sets of procedures with no
optional argument:

  read-<int>  ; native
  read-be-<int> or read-network-<int>
  read-le-<int>

> 3. I think it must be possible to interchange port and endian, i.e.
>
>    (read-binary-uint32 port endian) should be just as possible as
>    (read-binary-uint32 endian) (or even (read-binary-uint32 endian port)?)

I don't see any need for this since you can already pass #f as the
port:

  (read-binary-uint32 #f endian)  ; read from (current-input-port)

> 4. Why aren't there any primitives to do binary string writing and
>    reading, or even binary buffer reading and writing?

Apart from further conflicting with possible binary/character port
distinctions, this is beyond the scope of this SRFI.  A general text
parsing library with procedures for reading delimited or terminated
strings with an optional size limit would be the right place for this.

--
Alex