freenode/lisp - IRC Chatlog
Search
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
7:24:26
flip214
hmmm, cliki.net says that my account doesn't exist.... was there a cleanup some time ago?
8:02:29
Shinmera
The primary problem with c-l.net is that like 99% of the pages hosted on it point to links that are long gone.
8:03:36
antoszka
There should be an automatic cleanup procedure. A bot that checks the links and removes them or marks them *dead*.
8:04:48
Shinmera
Either way the problem is that maintainers don't really care to begin with, or there is no real maintainer, so the links stay dead.
8:04:56
flip214
that might be the best solution, because the automatic fixing can be made more intelligent over time
8:07:13
flip214
then I could try to rig something up. (and I had to resist HARD to write "... to make cliki great again" ;)
8:08:39
Shinmera
Sure, but ease of collaboration and integration can go a long way to gaining traction. Cliki feels sluggish and dead.
8:08:48
flip214
any alexandria maintainers here by chance? I asked for permissions to gitlab about a month ago, so I can fix up some of the doc strings... and no answer yet.
8:09:29
flip214
the github interface to edit _any_ file (which just clones the repo and does a PR in the background!) is very slick.
8:11:26
Shinmera
There is definitely value in the idea of a central hub of information and advice for CL.
8:15:40
Shinmera
Anyway, the software and the "cliki idea" are only marginally tied together, so I agree with jackdaniel to a point.
8:19:38
flip214
but if people would hear that the CL wiki would run on PHP, wouldn't that be awful?? ;)
11:49:12
Shinmera
flip214: That's the point. In graph theory, a tree has no "root". Any node in the tree can potentially be considered its root, but that consideration is purely arbitrary.
13:19:46
Younder
edgar-rft, your implementaion conses like crazy. It will be slow for large datasets
13:22:10
Bike
though maybe i don't understand it anyway. is args supposed to be a list of numbers or a list of lists?
13:27:17
Younder
In compiler theory we use bitsets. Because they are a more compact representation of bool. Particularly in data flow analysis.
13:29:02
oleo
When the function receives its arguments via &rest, it is permissible (but not required) for the implementation to bind the rest parameter to an object that shares structure with the last argument to apply. Because a function can neither detect whether it was called via apply nor whether (if so) the last argument to apply was a constant, conforming programs must neither rely on the list structure of a rest list to be freshly consed, nor modify that list
13:48:59
aeth
anyway, this is the final form: (defun everycons (&rest args) (reduce #'cons args :initial-value nil :from-end t))
14:16:54
R0B_ROD
Everytime I try to build something or pull a library it says quicklips isnt installed
14:26:00
pjb
edgar-rft: so there are ones who are more ones than others… (everyone '(1 1.0 2/2 1.0d0)) #| --> nil |#
14:40:26
edgar-rft
pjb: float 1.0 could be an arbitrary accumualtion of floating-point rounding errors, so you can't surely say if float 1.0 is *really* fixnum 1.
14:41:48
edgar-rft
phoe, implement this: <http://68.media.tumblr.com/tumblr_kud6opJD1s1qa31pso1_r2_1280.gif>
14:42:11
Younder
Type systems are notoriously hard to get correct, and embarrassingly easy to get wrong.
15:06:21
zulu_inuoe
I know people complain about LOOP, and show off their loop-fu, but I don't think I've ever even came close to writing a DO that works, even a simple list iteration
15:07:57
marvin2
i think most people who dislike loop don't use do but dolist, filter, map, reduce, etc
15:14:27
marvin2
step keeps getting evaluated (and assigned to var) while test-form evalutes to true. when test-form evaluates ot false, result-form is returned