Subject: Re: `read-sequence' and sockets
From: Erik Naggum <>
Date: 1998/11/26
Newsgroups: comp.lang.lisp
Message-ID: <>

* Sam Steingold <>
| `read-sequence' doesn't specify whether it reads bytes or chars, leaving
| that for the stream to decide.

  actually, it is an error for the element-type of the stream and the
  sequence to disagree.  apart from that, anything that both accept will
  actually work.

| what if the stream happened to be a socket?

  a socket should be a stream.

| most implementations provide this extension, but they disagree on what
| `read-sequence' should do with them (clisp refuses to do anything and
| instead provides `read-byte-sequence' and `read-char-sequence' for
| sockets; allegro insists on using chars).

  please don't claim what you have only guessed to be facts.  it is f*king
  annoying and makes it needlessly irritating to help you when you have
  effectively refused help before you asked the question you need answered.

  I have used sockets with :element-type '(unsigned-byte 8) in Allegro CL
  since 4.3, and it hasn't stopped working in 5.0.  remember to create your
  vector with the same element-type, and Allegro CL is happy as can be.  in
  other words, Allego CL insists on doing what you ask it to do.  if you
  only ask for characters, Allegro CL insists on giving you characters, not
  what you didn't ask for, even if you wanted something different.  this is
  why I use Allegro CL in mission-critical software, instead of C, which
  quite often insists on doing something I didn't tell it to do, no matter
  whether I wanted it or not.

| Any chance X3J13 will ever specify this?

  they already _have_ specified it as far as they could.  the socket
  classes are subclasses of STREAM in Allegro CL, and thus have to behave
  as all streams do.  such is the hallmark of a quality extension.

| What am I supposed to use to read bytes from a socket in ACL?

  the documentation.

  The Microsoft Dating Program -- where do you want to crash tonight?