freenode/#lisp - IRC Chatlog
Search
13:05:05
Colleen
See 'help about' for general information. Try 'help X' to search for or retrieve information about a command.
13:05:30
Colleen
I found the following commands: 8, get, mop, say, set, clhs, deny, help, roll, tell
13:05:51
Colleen
Command Syntax: roll &OPTIONAL (SIZE 6) (TIMES 1)
Documentation: Roll some dice. Note that this is not provided with the intention of providing gambling means.
13:06:18
Kevslinger
Is it weird that I thought the roll command would make her roll over, similar to the trick you teach a dog to do
13:07:50
Colleen
Clhs: meanings for + http://www.lispworks.com/documentation/HyperSpec/Body/a_pl.htm
13:18:42
Shinmera
Note that you can ask Colleen for the time as it should be for /users/, not /places/, but in order to do so the person needs a profile.
13:49:07
rme
My flight from Malaga was delayed so I missed my connecting flight in Paris. So, hi from a hotel in Roissy-en-France.
14:01:10
Bike
asked this last night but, does anyone know where slime decides what to print in the minibuffer for a function's lambda list
14:03:30
Bike
there's only one place in slime.el that uses swank:operator-arglist but it doesn't do any further processing
14:32:26
Xof
incidentally, on the question of "why would anyone want to subclass method combination anyway?", I'm not sure! But I do wonder whether a more declarative, less arbitrary-code thing might be able to allow compute-effective-method to do some kind of smart caching
14:32:51
Xof
or rather, the class of the method combination could inform compute-effective-method whether smart caching was allowed or not
14:34:17
Bike
compute-effective-method already turns a second value of extra information, it could include a cachep specification
14:34:33
Bike
cacheablep. of course define-method-combination would have to be altered to allow specifying an em can't be cached
14:35:53
Bike
that kind of ties into the question of how effective methods are actually used, which is sort of its own can of worms
15:37:56
trn
beach: If you remember the Multics system ... https://ban.ai/multics/ ... I made an semi-official announcement (https://lobste.rs/s/4ktahz/ban_ai_s_public_access_multics_system) and yesterday hit about 100 simultaneous users online poking around and nothing broke, though it's a ghost town today.
15:41:16
Kevslinger
phoe: I started with Phoeland but couldn’t find anything. Turns out the land of phoe works just as well :)
15:52:25
trn
beach: I'm working on a a web maintenance panel that will to the system with a WebSocket - so you can watch the blinkenlights of the actual system change the image on the panel that is the background of the web site. :)
16:03:34
trn
For the panel, it uses a lot more bandwidth than I expected it to and it can get lagged, even with compression. So now I'm working on a UDP-based protocol.
16:11:48
trn
I'm likely going to use a 6180 panel like that, because the newer the machines got, the less lights they had, and the more you were expected to look at an operator console.
16:13:49
trn
Probably, the later DPS series of machines looked more like standard racks and the half-sized ones looked like freezers :(
16:15:57
trn
On the 6180 and others I've seen and read the more interesting panels were on the inside of the cabinet doors
16:15:59
trn
https://i.pinimg.com/736x/68/0b/91/680b91e3907ce97558f3b3cc9c888243--evolution-s.jpg etc
16:29:18
trn
It's sort of interesting to me that Honeywell absolutely refused to the idea of a bus in their larger system, and the whole 'bus' was sort of a dirty word - they even abused the 'multiplexer' terminology to avoid 'bus' because they did everything point to point for latency and performance reasons.
16:30:40
trn
Yeah, it's sort of crazy, so attaching 8 CPU's to 8 IOM's needs 64 ports dedicated to that.
16:32:02
trn
The virtual machines 'wiring' code makes this all so much easier than setting these machines up in real life, I'd imagine :)
16:32:53
beach
trn: I need to go help my (admittedly small) family. We just came home from a week at ELS and there is much work to catch up on.
16:33:30
trn
I'll come back and bother you all later - on my todo list is to get the original ITS maclisp ELIZA and SHRDLU code working on multics :)
18:32:58
makomo
i'm looking at the postmodern library for postgresql. can someone tell me the rationale for the global *database* variable instead of having a database parameter in every function?
18:33:57
makomo
well, i know that global variables in lisp aren't the same thing as in other languages
18:34:57
makomo
one thing that isn't clear to me yet is, how does multithreading interact with dynamic scope?
18:34:58
jackdaniel
it may get tedious to carry all contextual varibles to each call of every function (even if function itself doesn't use database at all)
18:35:42
makomo
for example, one thread wants to call the api with one database object, another with another database object
18:35:47
jackdaniel
usually (because there are no threads in CL standard), dynamic bindings are shallow, that means they are not "inherited" from the parent thread (global values are taken)
18:36:15
jackdaniel
I'd recommend reading bordeaux-threads documentation which gives some examples how to do that (and that's basically what implementations do)
18:37:18
gonzojive
Anybody else share a desire for the following SLIME auto completion behavior? "cl-cor:m-co" <tab> -> "cl-coroutine:make-coroutine"
18:37:57
jackdaniel
one important note: when you create threads *always* wrap them in handler-case, even if you do not plan to handle errors
18:37:58
makomo
jackdaniel: i see. but the threads have their own completely separate dynamic environements? the binding for *database* in one thread isn't the same thing as the binding for *database* in another?
18:38:45
jackdaniel
(defvar *foo* 3) (let ((*foo* 8)) (print *foo*) (bt:make-thread (lambda () (print *foo*)))))
18:39:10
jackdaniel
Bike: because otherwise, if you don't catch error somewhere, your thread simply crashes
18:39:48
jackdaniel
this behavior happens at least on sbcl and ecl, but I would be suprised if ccl handles it gracefully
18:40:54
isoraqathedh
How do I invoke a restart on errors emitted by SBCL? e.g. for sb-int:stream-decoding-error, I want to invoke input-replacement, but there's no symbol named that in either sb-int, sb-ext or sb-impl.
18:40:57
makomo
jackdaniel: and rebinding *foo* to something else within the second thread will have no effect on the binding of *foo* in the first thread, correct? so the threads have separate own dynamic environments
18:41:07
jackdaniel
or you are sure that there are no unwind-protect in your code (in with-lock-held)
18:41:33
Bike
isoraqathedh: well you have to find the symbol. i couldn't tell you what it is, though
18:42:09
jackdaniel
but once again, there is no mention of threads in cl standard. different techniques are discussed for instance in a book Lisp in Small Pieces
18:42:40
isoraqathedh
It really is a little bit difficult to search for restart names. The default SLIME outputs only show the name of the package, not the package it's in.
18:42:59
jackdaniel
and that's all help I can provide right now, it is our last night in Marbella and we plan to have a delightful dinner :-) laters
19:17:27
doanyway
is there something similar to a study path for game programmer for common lisp ? I am still working through pcl
19:32:00
doanyway
jackdaniel: not for games but what books should I progress through to get proficient at common lisp
19:33:31
jackdaniel
sweat and tears ;) you won't make a mistake if you study paip (which was recently released to download for free)
19:37:47
doanyway
White_Flame: I finished land of lisp - pcl has been more helpful for my understanding
20:03:16
webchat296_
Hello SBCL question. What I have to do make sure when I execute the saved lisp image it gives me a REPL after executing the toplevel lambda? Currently it executes the toplevel and quits. (sb-ext:save-lisp-and-die "./sayhello" :toplevel #'(lambda () (format t "hello")) :executable t)
20:03:40
webchat296_
SBCL question. What I have to do make sure when I execute the saved lisp image it gives me a REPL after executing the toplevel lambda? Currently it executes the toplevel and quits.
20:10:00
webchat296_
does any quicklisp library provide this functionality? i.e. i save an image by calling a function with something like :repl t
20:12:04
Bike
there are some libraries that provide uniform interfaces to dumping images. there's asdf/image forone. i don't know much about them.
20:13:01
Bike
but also, if all you'redoing is executing something before going back to the normal repl, you could just pass --eval options to the executable
20:17:40
webchat296_
i have some data that i don't want to reload all the time. it lives in the image. something like this:
20:18:50
webchat296_
so what i want is, after i run the saved image .. i have access to *foo* in a repl and i keep on playing with the data
20:19:41
jasom
I can't be the only one to wish that unwind-protect was of the form (unwind-protect cleanup-form &body protected-forms) right?
20:25:35
makomo
i think i might have interested yet another guy for lisp. examples are the key it seems. :-)