freenode/#lisp - IRC Chatlog
Search
15:45:56
bjorkintosh
the code from Equational Logic as a programming language looks (lisp 'like), programming languages, an interpreter approach,and bulldog, a compiler for vliw
15:48:21
jcowan
which is why the Scheme standards are still called "The Revised^n Report on the Algorithmic Language Scheme"
15:50:33
puchacz
hi, where can I find an example of bordeaux-threads used to wait till both threads finish?
15:53:25
puchacz
"Wait until THREAD terminates. If THREAD has already terminated, return immediately."
16:56:16
beach
Bike: SICL has it in an :AROUND method on SHARED-INITIALIZE specialized to STANDARD-CLASS .
16:58:34
Bike
that's a little annoying. if it was in ensure-class-using-class, programmers could control how defclass is parsed pretty closely, e.g. how slot definition initargs should be interpreted
16:59:09
beach
This page says that when MAKE-INSTANCE is called, the :DIRECT-SLOTS initarg is a list of canonicalized slot specifications.
17:00:23
beach
"After error checking, this value is converted to a list of direct slot definition metaobjects before it is associated with the class metaobject."
17:01:19
beach
"It is not specified which methods provide the initialization and reinitialization behavior described above."
17:02:34
beach
But it would definitely not be conforming behavior to have ENSURE-CLASS do the conversion.
17:14:26
Bike
well, yes, i get that much. but make-instance is hardly used in this way anything, i don't think it's much of a burden
17:14:35
Bike
anyway, where is this method? https://github.com/robert-strandh/SICL/blob/d5e27ceabf93da65bf5e482612d0331650cbe2f1/Code/CLOS/class-initialization-support.lisp doesn't seem to be doing it
17:17:49
Bike
this page says the slots are canonicalized slot specs, but the superclasses are, at this point, classes.
17:22:45
beach
I am curious. The page that I showed you a link to, did you not find it easily before I showed it? If so, perhaps there are some other links I should add to that site.
17:24:25
beach
It is not obvious what a canonicalized slot description is, compared to a direct-slot-definition instance.
17:24:50
beach
Perhaps I should have a "terminology" page, and stick links to it at strategic places.
17:29:23
Bike
just wondering, because it took me some thought to figure out what it should do with fastgf
17:33:21
Bike
assign the class a new stamp and remove it from any call histories it's in, is what i came up with.
17:33:45
Bike
the new stamp makes the instances obsolete, and then removing it from the histories forces them to update next time they're used in a call.
17:34:53
Bike
the trick is reinitialize-instance has to actually call it, so that user methods on it can be called, and stuff
17:35:28
beach
I keep thinking that it's too bad that all this work is Clasp specific. I will need to do this all over again for SICL.
17:37:22
Bike
well the last substantial change i made here was adding applicable method caches, and i got that from you anyhow
17:38:28
beach
I meant more that it is too bad that this code can not become an implementation-independent library.
17:39:07
beach
It is going to exist in slightly different forms in different implementations, with extra cost in maintenance.
17:40:02
beach
And I kind of understood the arguments as they were presented to me. But I keep thinking that it is unfortunate nevertheless.
17:40:36
Bike
as you said at some point, it makes sense to have objects with classes in the startup image; that right there kind of implies that you can't have a library with its own definition of classes (so they have stamps, or whatever)
17:42:18
beach
Oh I didn't necessarily mean "something that can be loaded into a running system" when I said "library".
17:43:54
beach
But you are right. The way Clasp is bootstrapped often makes it necessary to introduce specific modifications to the code.
17:46:06
beach
Plus, drmeister's way of understanding how things work is to implemented them his way, and then he is too busy to think of how to write the code in an implementation-independent way, simply because you have your hands full trying to get the system into a reasonable state in the first place.
17:47:05
beach
I should be satisfied that Cleavir is still code that is common both to Clasp and SICL.
17:54:27
Bike
i mean there's even stuff like, say, the printer. seems like it should be modular enough, but then there's stuff like print-unreadable-object being able to print a memory address
17:56:00
beach
I usually get around those things by calling a client-specializable generic function to handle the situation.
17:56:27
beach
But that requires a very twisted way of thinking. I am just hoping it will pay off eventually.
17:56:58
beach
Certainly, existing implementations make absolutely no effort in that direction as far as I can tell.
17:58:34
beach
On the other hand, once I manage to get something to work that way, I can often turn it into a paper.
18:00:03
beach
Anyway, my (admittedly small) family is saying dinner is ready. The EU is not on daylight-savings time yet.
19:12:00
didi
Wow, I think I hit a bug on SBCL. The Backtrace says [error printing frame], the type error states "The value #<invalid object #<invalid object #x6C00000061> is not of type LIST" and there weird values for the local variables in the frame (as in #<unknown immediate object, lowtag=#b1, widetag=#x61 {6C00000061}>).
19:12:52
Bike
implementations generally look like they go through (setf slot-value-using-class)... i guess i can just skip it on standard classes like usuaul
19:13:35
didi
Hum, maybe a I have some "optimize speed" somewhere. Thanks for the tip. I will dig in.
19:19:07
didi
Nope. I only explicitly use `optimize' in one function, and it is not being called from the moment I initiate SBCL to the moment I hit the error.
19:47:48
didi
Weird. I can't clone SBCL's git repository. Git says "fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists."
19:52:44
jcowan
beach: I will dare to say that while (car nil) => nil may have some merit, the classic argument from assoc is not a good one
0:37:14
didi
Is there a size limit for the length of a &rest parameter or the size of an apply argument?
0:39:48
didi
This is such a frustrating bug. I updated SBCL but it still keep happening. I am trying to isolate it, but no luck yet.
0:52:51
didi
OK, I feel I am closing in. This either have to do with DEFMETHOD or the size of a &rest parameter. I changed the method to a DEFUN with a straight parameter and it computed without an error.
0:58:38
didi
Bike: Shouldn't I expect the rest argument to live enough for other functions to use it?
1:00:06
Xach
I am reminded of https://www.xach.com/naggum/articles/3067167916417343%40naggum.no.html
1:02:02
didi
I don't directly change it. Could a method's &key or DOLIST change it? This is weird. /me continues to dig
1:13:33
didi
Although, maybe the size of the function and/or variables plays a role here, by Bike comment on dynamic extend.
1:15:38
didi
Just trying to lighten up my day. I mean, I shouldn't pass &rest lists to other functions?
1:20:54
pierpa_
didi> can't you check a different implementation? in this way a lot of hypotheses can be pruned
1:22:16
didi
pierpa_: Heh. I think I'm way deep into SBCL; I might call SBCL-only functions in some places. ¯\_(ツ)_/¯
1:39:38
stacksmith
Hello. Why is (and) => T ? Superficially it seems that and returns nil or the last form...
1:49:53
Bike
on the opposite end, falsehood is the identity of disjunction. (or nil x) = x. so (or) is nil.
1:57:34
didi
Oh well, the error finally brought down my computer. Lots of RAM consumption and stuff.
2:00:52
didi
Ah, it is not me who is changing the rest parameter. If I don't copy-seq the rest parameter to the local (loop for x in rest-parameter ...), the error occurs. I am almost there.
2:11:09
didi
If anyone wants to look at the method, it is https://paste.debian.net/hidden/85956d89 . I'm even copying the rest parameter for my own use, and the error still occurs. This method calls lots of other functions, so I don't know how useful is to look only to it.
2:21:21
didi
pierpa_: Right. Copying the rest argument before passing it to MAKE-HSET doesn't influence the occurrence of the error.
2:29:25
jcowan
That article on vacuous truth doesn't make clear that sentences like "All my dogs are green" has two logical forms:
2:30:46
jcowan
whereas the reading "Each member of {my_dogs} is green is vacuously _false_ if I have no dogs.
2:31:11
jcowan
The first one has a negation in it, because A -> B = ~A or B, whereas the second does not
2:32:18
jcowan
I don't know any formal set theory, but it was explained to me in these terms by a logician
2:33:06
Bike
i'm unaware of how the second case would be written out in regular first order logic in a way that differs from the first case
2:35:41
jcowan
whereas here we have a qualified variable, whose domain is not every object (as in FOPL) but only the objects in the set
2:37:30
jcowan
I think this paper is relevant https://projecteuclid.org/download/pdf_1/euclid.ndjfl/1093887729
2:38:09
Zhivago
I think the simplest way to consider it is that it is a not-invalid subset of a valid set.
2:38:38
Zhivago
Which implies that when you take the union of that with another valid set you should get a valid set.
2:43:41
Bike
so, like i have no dogs, and my pal Negasi has one green dog. we can say ««all dogs Negasi and Bike have are green» is true iff all dogs negasi has are green and all dogs bike has are green». all dogs negasi and i have are green, and all of negasi's dogs are green, so to make the equivalence work all of my dogs should be considered green as well.
2:45:05
Bike
but it does mean that "all A are B" doesn't imply "some A are B". it's my understanding that aristotle killed boole in a duel over this
2:49:16
jcowan
Well, they definitely fought it out, but who's the winner is still an open question, as usual in philosophy
2:52:02
pierpa_
here https://plato.stanford.edu/entries/quantification/ there must be the answer. Unfortunately it is too long to read now :)
3:14:43
Bike
if i put the dolist in a function and call it it's still an error but there's no crash...
3:26:58
didi
loke: SLIME's debugger, so I'm guessing "yes". Here what it looks like: https://paste.debian.net/hidden/9987bb28
3:32:18
didi
If it's relevant, I am running SBCL version "1.4.5" with --dynamic-space-size 4096 and --control-stack-size 32.
3:33:54
loke
If you have more than a few tens of arguments, you should consider changing your design.
3:35:19
loke
A list is much better than rest arguments of course, but a vector would probably be faster still (depending on what you intend to do with it)
3:36:23
loke
didi: Yes, but not for the purpose of creating lists several hundreds (or even thousands) of elements long.
3:42:28
pierpa_
They've been too optimist when defining CALL-ARGUMENT-LIMIT. Resetting it to 50 should fix this problem. 50 btw is way more than reasonaly high.