freenode/#lisp - IRC Chatlog
Search
22:05:35
Xach
mason: For what it's worth, when I did that, I treated everything from the network initially as binary and used epoll.
22:06:16
mason
I wrote one for Perl but now I want one for Lisp, and I don't see why I have to solve this each time. :P
22:06:44
mason
Xach: But yeah, that's what I've done thus far. It's all binary, I parse it and figure out when I've got a usable chunk to peel off.
22:07:03
Xach
mason: Sorry to suggest something I haven't personally tried - I've been meaning to. It might not suit.
22:07:19
mason
Shinmera: As I explained to you, I want something that damned near every network service does, only they all have to implement it independently, which strikes me as weird.
22:09:26
Xach
mason: I go the binary route because I find it harder to handle trying to customize encoding error handling, line ending conventions, etc. for character streams, and I haven't had much luck with bivalent streams, but I can predict binary streams pretty well.
22:09:38
mason
Xach: You may have a winner there. I want to see how they implement it, but it initially looks right.
22:11:28
Shinmera
mason: More libraries, even smaller wrappers to make things trivial to get going with, are always welcome.
22:12:41
mason
Shinmera: I want to spend a little time with Xach's basic-binary-ipc suggestion, but if it doesn't quite fit I'll plan on contributing something.
22:13:29
Shinmera
Well, even if b-b-i does do the trick, it might need a bit of work out of which making a library might be useful.
22:57:37
norserob
Hi, I am trying to use libdrm on linux from lisp. Looked at cl-drm on github, and it works ok for some sthings. But I want to access framebuffers, and it looks like I need to do some ioctl calls. So far this fails, not sure why. I put an example in a gist: https://gist.github.com/rfolland/6f0aba4171519881f938040d9d0f237b
23:33:33
norserob
Xach: I got it from a very instructive C program by D.Herrmann at https://github.com/dvdhrm/docs/tree/master/drm-howto. I printed the value from there. It is calculated by a macro, I'll need to look into that. But it looks like I'm getting there anyway now, I got a better result after setting some of the values on the struct before doing the ioctl call. Forgot to do that in the small example in the gist. I
23:34:31
norserob
I want to get the examples by Herrmann working in ccl before moving on with my own stuff.
0:42:13
jasom
mason: b-b-i provides the primitives that you can build your library off of, but you'll have to create a buffer for each socket and fill them in as you go, then add the logic for detecting newlines
3:08:43
pjb
asarch: you have two ways of detecting it: returning a value, or signaling a end-of-file condition.
3:10:12
pjb
Note, you can always save the detection of eof into some hash-table and write a feof function to get it, if you want to reproduce the bugs of C…
3:10:37
pjb
asarch: alternatively, in the case of file-stream, you can test (= (file-position stream) (file-length stream)).
3:17:20
pjb
asarch: but similarly after this test of file-length, it may change, so if the test is false, it doesn't mean you will be able to read anything. If it returns true, it doesn't mean you won't be able to read something.
4:01:27
pierpa
just tell him what he probably is looking for? asarch, probably you want: (loop for line = (read-line in nil nil) while line do ...)
4:11:57
pjb
asarch: so read-line returns usually a string, so returning NIL when eof is discriminating.
4:13:55
pierpa
right. Thanks pjb. I must correct myself: most input functions can either signal a condition or return a value you choose on end of file.
4:22:18
asarch
Question: if Common Lisp is not a multi-threating environment per se, why the "feof checks it too late, the file might have grown since!" condition?
4:25:11
pjb
This is because the OS and CL are different entities that you cannot know when the file will grow (or shrink).
4:26:00
asarch
pierpa, I just looking for something a la C: while (feof(fp) != NULL) {fscanf(fp, "%s", buffer); printf("%s", buffer);}
4:28:15
pjb
asarch: reproducing C bugs in CL will require more work; as I explained above, you can define a feof function, by memorizing the result of the last read operation for each stream!
4:31:11
pjb
Notice that C doesn't have multiple values, conditions, or types associated to objects. This is so defectuous! This is why the function fread() cannot distinguish between end-of-file and error! Hence the need to store the eof status in the stream record, and retrieve or clear it with feof and clearerr.
4:31:46
pjb
asarch: but this let you forget that those are not synchronous operations! You're just accessing a memorized flag in a structure.
4:34:35
pjb
asarch: for example, that you don't write a while(!feof(fp)) loop. You're a lame C programmer.
4:39:12
asarch
When I was learning JavaScript, I asked if there was a shell who could understand JavaScript commands directly
4:40:19
asarch
However, they told me that it was not possible because the common and useful shell constructs like piping and redirection would conflict with JavaScript constructs
4:58:18
pjb
asarch: cd ~/quicklisp/local-projects ; git clone https://gitlab.com/com-informatimago/com-informatimago.git # Then (ql:quickload :com.informatimago.common-lisp.cesarum)
4:59:29
pjb
(com.informatimago.common-lisp.interactive.interactive:lspack :com.informatimago.common-lisp.unix.passwd t)
6:42:02
jackdaniel
but looking at PRs it seems it is not *actively* maintained. but it is not abandoned either
8:59:07
phoe
I have a DEFINE-FOO macro that has a &body as its last argument. I need to tell it that the first string of that &body is a docstring and should be highlighted as such, not as an usual string.
9:10:19
dmiles
lets say my lisp reader is reader a symbol had just read.. "#:A" . Are these the only characters that will stop reading the symbol? #\; #\, #\( #\) #\' #\` #\" #\: ?
9:11:13
schweers
dmiles: if I understand your question correctly, every terminating macro character will terminate (hence the name) reading the symbol (or number)
9:12:48
schweers
they are listed somewhere in the hyperspec, I’m looking for the page right now, give me a sec
9:15:57
schweers
not quite as nice, but figure 2-7 does the job: http://www.lispworks.com/documentation/lw70/CLHS/Body/02_ad.htm
9:16:40
schweers
keep in mind that we are talking about standard syntax, you may change the readtable to include other terminating macro characters
9:19:33
dmiles
also next is there a lisp reader written in lisp somewhere.. the reader i implemented is too permissive .. for example I dont keep count of backquote level when reading commas
9:22:43
Shinmera
schweers: What do you mean? The reader is just an algorithm. You can implement it in any language.
9:23:35
schweers
Shinmera: I don’t know a lot about bootstrapping, but then I remembered that one needs a working CL environment to build sbcl, so it doesn’t seem that unusual anymore.
9:25:12
dmiles
i i was suprised at sbcl is that impls end up doing a minimalistic reader in their lnaugage (say C) then if they start to writ e alisp reader in Lisp.. their C code gets jealous and starts to take over until the lisp becomes busywork
9:27:33
dmiles
so they weight the cost benefits of having two codebases.. one lame one in C they cant delete (and they forever have to improve) .. vs a *overly* fantastic one im Lisp