freenode/lisp - IRC Chatlog
Search
20:04:00
jackdaniel
random-nick: also #clim channel can provide you some good advice if you are stuck
20:07:50
jackdaniel
(lispworks guide is also good learning material of course, same as allegro clim manual)
21:07:12
carmack
Error while trying to load definition for system drakma from pathname ~/quicklisp/dists/quicklisp/software/drakma-v2.0.3/drakma.asd: SYSTEM::%EXPAND-FORM: (LOAD-SYSTEM TEST-OP) must
21:10:31
Bike
carmack: i remember seeing that before. i think it boiled down to making sure your asdf and quicklisp and such are recent versions
21:12:50
jasom
I think just dropping it in local-packages is sufficient, or you could just load the asdf.lisp in your clisprc.lisp
21:14:03
Bike
ASDF is the system that deals with what you call "packages". clisp is an old implementation, so its ASDF is too old to support modern "packages".
21:14:22
Bike
Okay how about: just don't use clisp. you have sbcl installed. try doing this on sbcl.
21:36:22
knusbaum
carmack: If a website is down, that's not really quicklisp's fault. Most of the time quicklisp works really well.
21:40:58
White_Flame
(in the "software packages" sense, not in the Common Lisp namespace package sense)
21:41:30
Shinmera
The problem that you pasted is that the website you're trying to access /with/ drakma is down.
21:42:51
Shinmera
And beside that, Quicklisp downloads from AWS. If that were down, a lot more would be affected too.
21:51:39
axion
He's asking why he doesn't see the result of an http request when he only loaded a file
21:53:34
whoman
after you (ql:quickload :drakma) , at the repl, type the other thing. the repl is slime i guess
21:54:03
axion
carmack: An http client library lets you connect to web sites. If you want to see the result of connecting to an http server, you have to, connect to an http server.
21:56:29
whoman
you are running faster than your legs will carry you, thats all. just slow down and takes things step by step, there is no rush
21:56:56
carmack
I thought there would be so many problems with such simple things. Now I begin to understand why common lisp is not such a popular
21:59:03
axion
Please follow the installation instructions. During quickinstall, you are given the chance to add it to your implementation's init file.
22:05:13
whoman
M-x slime -> (load "quicklisp.lisp") -> follow instruction both times, there is two commands it will ask you -> (ql:quickload :drakma) -> ..
22:36:50
dim
for allowing a better way to specify the target table in the user's DSL, because there's documentation and regression test support and then the “lisp API”
22:40:08
pjb
dim: I perfer to rebind: (defun bar (foo) (let ((foo (normalize foo))) …)) instead of (defun bar (foo) (setf foo (normalize foo)) …)
22:42:01
pillton
There is also this from the SBCL manual: "Python is very aggressive and clever about inferring the types of values bound with let, let*, inline function call, and so forth. However, it's much more passive and dumb about inferring the types of values assigned with setq, setf, and friends."
22:47:06
pjb
You can also break the indentation if your objective is to have short bearable commits.
22:51:08
dim
when 99% of the function's body has changed because of indentation, I find it hard to read the diff/project's history
23:18:58
zulu_inuoe
Is there any reason why a (successful) gethash followed by a remhash, with the exact same arguments, would fail?
23:22:53
White_Flame
if you built or linked to source, you could always step through & inspect what's going on, if you think it's a bug in the hashtable itself
23:22:56
dim
26 files changed, 570 insertions(+), 343 deletions(-) --- came to be quite a refacoring
23:23:29
zulu_inuoe
I just wanted to make sure that I wasn't overlooking some weird behavior in remhash/gethash when it came to say, an equalp test
23:39:42
zulu_inuoe
White_Flame: So, I'm noticing one of those great errors where a printf (format) is changing the outcome of my hash success. One of the components of my key is a pathname. I noticed if I do a format ~A on said pathname then my gethash/remhash will fail.
23:40:18
zulu_inuoe
AFAYK, is there a side effect of pretty-printing a pathname such that it won't be equalp ?
23:41:17
White_Flame
I don't know. Maybe it fills in stuff on the structure? print out both before & after that print
23:45:24
zulu_inuoe
It must be. Even inspecting it will change it so the gethash fails I'm not sure how to even see 'how' it's changing. I'm going to look through CLHS to see if this is expected
23:50:54
pillton
I'm not sure I understand what you are saying. It seems to work fine: http://paste.lisp.org/display/354259
23:51:39
White_Flame
zulu_inuoe: can you reproduce the issue if your hashtable only has that single entry?
0:03:50
zulu_inuoe
I'm sorry. I'm trying to come up with a test case that works. Because my gut feeling is that it has to do with how the pathname gets constructed
0:21:12
jasom
zulu_inuoe: I added an assertion and put it in a loop, it ran 10000 times in a row with no issues.
0:27:14
zulu_inuoe
They all fail on the first go-around. My guess is whatever the format is doing, it's messing with the cached pathname or something
0:39:38
jasom
OT: is there a gender-neutral formal address? I'm familiar with he/she/they and Mr/Ms/Mx, what about sir/madam/???
0:40:39
zulu_inuoe
I hope there is. I like to get fancy when I address people some times but I don't want to sacrifice gender neutrality to do it
0:43:14
zulu_inuoe
Anyway, using pathnames was temporary until I migrated to URI's, so I suppose now's a good a time as ever to work on that since this bug is breaking me
0:50:24
zulu_inuoe
Yes. Yes it is. But it looks like it's recent since jasom was not able to replicate on 1.3.17
0:52:12
zulu_inuoe
how much do you want to bet it's https://github.com/sbcl/sbcl/commit/58602640ed7040d9f75c7fe28f058a0b2755c6c0
2:44:15
antonv
R0B_ROD: I wouldn't mix installing StumpVM and learning programming techniques from SICP
2:50:41
fiddlerwoaroof
Zhivago: the biggest issue in SICP is that DEFINE has no real equivalent in Common Lisp
2:51:01
Zhivago
Well, it has a couple of equivalents depending on context, but I can see how that would be confusing.
2:52:06
fiddlerwoaroof
Fare: if you're know lisp, it's easy enough but for a beginner, translating define to the appropriate form is a bit confusing
2:53:34
fiddlerwoaroof
Also, I had a hard time reading the code samples in SICP because I would mentally intepret them in "Lisp-N>1 mode" when they're written for a Lisp-1
2:54:50
antonv
Fare: BTW, I posted only one test and said "will do others in coming days" but when read you reply that "we can release the current ASDF" I relaxed and didn't do more tests
2:57:10
Fare
ASDF is portable enough that there is no reason it would break on one implementation and not the other, unless bad magic in #+ccl or such.
3:04:27
fiddlerwoaroof
R0B_ROD: to install stumpwm:: wget http://beta.quicklisp.org/quicklisp.lisp && sbcl --load quicklisp.lisp --eval '(quicklisp-quickstart:install)' --eval '(ql:quickload :stumpwm)' --eval '(save-lisp-and-die "stumpwm" :executable t :toplevel #'"'"'stumpwm:stumpwm)'
3:11:31
fiddlerwoaroof
Yeah, the first argument to save-lisp-and-die is the place where the stumpwm executable will be created
4:12:12
jasom
BW^-: not really on-topic here, but a generalized form of tortoise-hare algorithm would work with that
4:14:49
jasom
actually if you need to find all, then a standard DFS traversal will do it for you; just note whenever you reach a node you've already visited, you have found an edge for a loop.
4:40:13
BW^-
jason: what was your point with refering me to the dynamic programming page? dynamic programming as in lisp style typing i guess... a dynamic graph algorithm means however that it's for a dynamic graph
4:47:17
slyrus
no point. just commenting on the origin the relatively content-free name. still, a great algorithmic advance!
5:19:01
jasom
my ql2nix script decided that babel depended on a system named ":trivial-features" which we don't know how to build and so all systems that directly or indirectly depend on babel were not built; cffi depends on babel...
5:20:37
jasom
But instead of switching away from regexes, I'm just goign to make the regex more complicated: "Component ([^: ]*::?([^ ]*)|\"([^\"]+)\"|([^ ]+)) not found"
5:23:36
jasom
now I just need to wait for something to depend on |foo| and I can make it even *more* complicated
5:46:59
jasom
and dynamic programming has nothing to do with lisp style typing. Dynamic programming is a style of algorithm that basically boils down to recursion + memoization.
5:47:21
BW^-
jasom: a dynamic graph is a graph that changes edge content over time i.e. edges may be deleted or inserted
5:49:09
jasom
BW^-: this sounds like an incrementalcycle-detector for a reference-counted system. You can probably find algorithms to do this in the garbage collection literature
5:49:53
jasom
BW^-: and you *can't* do it for arbitrary concurrent mutation of the graph unless you have some sort of agrement between the mutator and the cycle-detector.
5:54:23
jasom
BW^-: consider A->B->C and the Mutator changes the graph to C->B->A. You could easily have a false-positive if your cycle-detector was considering B at the time. *however* if you don't allow graph nodes to stay alive while disconnected, then there is no way to perform that transformation without generating a cycle, and you don't have a false-positive, because there was a cycle there at some point in time.
5:57:40
jasom
alternatively if you can exclude the mutator from running when you have found a potential cycle, you can check if the potential cycle is truly a cycle. But if you can prevent the mutator from running, you could just run your entire graph traversal as well, and then the "dynamic" requirement is non-sensical.
6:01:13
BW^-
jasom: what cycle detection algorithms are you aware of being used in reference-counted systems?
6:01:16
jasom
BW^-: so what are the requirements; could the cycle detector exclude the mutator and run a full-pass? Because then it doesn't matter that the graph is dynamic, because it will be static for the full run of your algorithm
6:10:14
jasom
That partitions verticies into components; Any component with multiple verticies is a cycle, and any component with just one vertex is not part of a cycle.
7:07:37
flip214
can I tell QL to compile some systems (with all their dependencies), but not load them?
7:07:58
flip214
guess I can't, because compiling them might require some dependencies to be available...
7:09:07
jasom
flip214: on sbcl, if you don't have any threads running, you can fork a process, load them all and then exit.
7:14:45
jasom
even if it doesn't do what you want, it would be a good place to start to do what you're doing