freenode/#lisp - IRC Chatlog
Search
18:50:44
remexre
hm, if I ban qualifiers, and the symbols are non-extensible (and I just allow them explicitly), that seems more tractable?
18:53:30
remexre
idk, it still seems kinda surprising that there's no "could I call foo with these args"...
18:55:41
Bike
clos also generally assumes that when you're figuring out what a call does, you actually have all of the arguments. not just their classes.
18:57:49
Bike
i don't know what that means. if your generic function has the standard method combination and you don't allow qualified methods and you can sort out what to do with eql specializers in some particular way you can probably work out whether a call is valid.
19:00:59
Bike
Nil is which argument to find-method? the first argument to find-method is the generic function.
19:01:56
Bike
find-method finds a method with the exact specializers you get it. like, if you provide a class that's a subclass of a class that does have a method specialized on it, that method won't be returned
19:05:32
Bike
this is the function that's actually used during a call, if you pretend caching doesn't exist
19:38:34
thijso
How do I just restart/retry a function if it fails? Can I do (restart-case (somefun) (restart-fun () (somefun)) and then bind handler to invoke that restart on failure? Is there a better way to do this? For context, 'somefun' starts a UDP listener on a port, and regardless of errors, it needs to get back up and listening.
19:40:50
jmercouris
I assume the operation is a blocking one in this case, if it is not, my suggestion doesn't work
19:44:38
thijso
My idea was to wrap the (wait-for-input ...) call in an unwind-protect, where the socket gets correctly closed in case of failure. Then the function that called udp-start-server in the restart calls that same function again, re-connecting the port. But I'm not sure if this is the correct way to do this.
19:45:20
Josh_2
if an error is called it just attempts to restart the function in a networking context
19:50:29
Josh_2
Plaster has absolute murdered the indentation, I think it is because I use tabs not spaces ¯\_(ツ)_/¯
19:52:13
thijso
jmercouris: yeah, that's next on my list to figure out, but I'm having trouble debugging as it's threaded code. I'm using the udp port to also send dump commands, so I can see what is going on. Bit of a hack, I know, but it works. As long as I have the UDP port to talk to...
19:52:51
Josh_2
thijso: you can print to standard output with a background thread by printing to *standard-out* if that helps with debugging
19:53:43
jmercouris
thijso: I guess my question is, if you are just listening on the UDP port, why does it crash? is it *what* you are doing with the data that you listen to that is causing your program to crash?
19:54:41
thijso
The issue I'm having is not printing to stdout while my program is behaving. The issue is that my errors seem to miss a lot of information when they happen. It's a lot less than what I get in slime, for example.
19:55:14
jmercouris
thijso: aha! well then, I should inform you about the two types of slime you can have
19:56:00
jmercouris
thijso: you can have a ~/.swank.lisp like this (setf swank:*communication-style* :spawn) or like this (setf swank:*communication-style* :fd-handler)
19:57:45
jmercouris
I'm not sure exactly, I believe FD handler is file descriptor handler rather than a BSD socket
20:00:00
thijso
Ah, yes. But I'm running the code without swank or slime, as I need to run x instances (nodes) that talk to each other.
21:13:13
eich
Hey everyone, I just downloaded CLisp from sourceforge. how can I build from source on a mac?
21:36:04
remexre
is there a builtin to turn a (vector unsigned-byte) to a bit-vector in big-endian order?
21:38:39
kpoeck
than ./configure --with-libiconv-prefix=<yourlibiconvpath> --with-libsigsegv-prefix=<yourlibsigsegvpath> --with-libreadline-prefix=<yourlibreadlinepath> --with-libffcall-prefix=<yourlibffcallpath> --cbcx <directoryname>
0:10:15
remexre
is there a way with iterate to iterate through all the active elements of an arbitrary array?