freenode/#clasp - IRC Chatlog
Search
16:40:24
drmeister
The part I don't know what to make of are the stamps. They are the stamp that the class imposes on instances 876 and the stamp of the object 900.
16:45:19
drmeister
The class of the instance may have been changed - then there will be no relation between the stamp values.
16:45:54
drmeister
So if the class of the instance is being changed but the slots of the instance aren't being rewritten - then there will be a problem...
16:59:13
drmeister
I'm also adding more code to the debugging reader to get more insight into what is going on.
16:59:30
drmeister
I don't have a way to lookup the class given a stamp - that would be useful here.
17:00:28
drmeister
This is an situation where I have an error and I want to figure out which class is associated with stamp 900
17:35:42
specbot
Introduction to Classes: http://www.lispworks.com/reference/HyperSpec/Body/04_ca.htm
17:35:51
Shinmera
"A class can have a name. The function class-name takes a class object and returns its name. The name of an anonymous class is nil."
17:39:33
Shinmera
Well, not necessarily. You could constrain classes and require them to have a unique name.
17:42:34
drmeister
Ok, so the instance is being changed from a ASDF/COMPONENT:COMPONENT to an ASDF/SYSTEM:SYSTEM and for some reason the change isn't being done properly
17:43:42
drmeister
Hmmm, the stamp of the instance is still 876 - but the class of the instance does not match that.
17:44:02
drmeister
Ok - well the problem is changing the class of an instance - it's broken somehow.
18:19:56
beach
Also notice that the name given to find-class can be distinct from the one you get by calling CLASS-NAME.
18:33:25
kpoeck
Surprisingly i get an error compiling [ 6/368] Compiling src/clbind/link_compatibility.cc
18:33:58
kpoeck
Saying /usr/local/include/boost/config/detail/posix_features.hpp:18:15: fatal error: 'unistd.h' file not found
18:34:41
kpoeck
I have unistd.h in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
18:35:50
kpoeck
In /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 there is no unistd.h
18:42:03
drmeister
kpoeck: No - I keep my OS X updated and I have no interest in going backwards in OS X version or Xcode version.
18:42:36
kpoeck
include_dirs.append("/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/")
18:45:38
drmeister
Are you using the stock Xcode? I haven't tried that yet. I build clang/llvm from the tip-of-trunk
18:46:52
kpoeck
No until upgrading to highSierra it worked perfectly with external-clasp and this is what I am using
18:47:36
kpoeck
I wonder whether I need to tell external clasp about /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/
18:48:00
drmeister
Ok - I'm a bit rushed today doing something else so I can't help you at the moment - check back tomorrow - I'll have more time.
18:48:55
drmeister
Yeah - missing header files happen to me every time I upgrade Xcode - that's why I automatically assumed you were using an old version.
18:57:49
Bicyclidine
so this error says it's for cell-error-name, not any of the accessors you define
18:59:18
Bicyclidine
if you do like (ignore-errors (bara *foo*)) so that it doesn't trigger the debugger does it still happen?
19:59:08
scymtym
drmeister: we missed each other in #lisp. i said i'm impressed with the fact that you wrote that parser and whether you had specific question regarding destructuring and whether you wanted me to look at the code
20:10:56
drmeister
I haven't pushed it to github because it's mixed up with a bunch of other changes that aren't quite working yet.
20:11:19
drmeister
The paste is the parser - it's my first esrap parser - but it was pretty straightforward - I like esrap.
20:11:46
drmeister
Parsers can be tricky - so if you see any flaws or weak points - I'd love to hear them.
20:12:46
scymtym
one trivial thing: (:lambda (x) (esrap:text x)) -> (:text t), (:lambda (x) (second x)) -> (:function second)
20:15:30
scymtym
(defrule ... (:lambda (x) (let ((a (car (second x))) (b (cdr (second x)))) ...))) -> (defrule ... (:function second) (:destructure (a . b) ...)), that is transforming options compose in the sense of function of function composition. works for chains of (:text ) (:function ) optionally ending with (:lambda ) or (:destructure )
20:19:47
scymtym
you need special tactics to compensate the lack of a lexer stage and it doesn't have parametrized rules, yet (those are good for indentation-based things like python or yaml)
20:22:32
scymtym
https://github.com/scymtym/parser.common-rules/#tokenization explains some of it. i guess, the whole system may be of interest if you want to minimize work
20:25:49
scymtym
the other part is a convention regarding who is supposed to eat whitespace. i use this: rules only eat whitespace between their non-whitespace components. if needed, use DEFRULE/S to define an additional variant of the rule that eats trailing whitespace. e.g. (defrule/s name ...) (defrule assignment (and name/s equal/s value))
20:50:56
drmeister
Yeah - who eats whitespace caused me some anxiety - I muddled through by copying examples I found.
21:18:34
Shinmera
Whenever I had to write a parser I looked into parser toolkits and then couldn't be bothered to really figure them out so I just wrote them by hand. Probably not the best strategy.
0:20:25
Bike_
i think modifying the reader as it is now is going to be too much of a pain. but, i can enforce that reader macros are functions rather than symbols, and bind all the control variables, so everything else should be fine with environments
0:37:06
drmeister
I'm going back to the asdf example because it seems a little easer to understand than my example.
0:37:20
drmeister
Is there any other way to change the class of an object other than 'change-class'?
0:37:53
drmeister
Because there are only two 'change-class' calls in ASDF and I put print statements in front of them both and they aren't triggering - but the bug is.
0:40:57
drmeister
So - just make an instance of a class with a slot that is left unbound and try to access that unbound slot?
2:03:37
Bike
one stamp is for cell-error, and one is for unbound-slot, the former defines the slot, and the latter is a subclass
2:04:24
drmeister
opt-class is the class that I stored in the optimized-slot-reader object that stores the optimization info.
3:10:37
beach
I thought you had abandoned trying to implement first-class global environments in Clasp, given that it is not very costly to just start a process for each user.
3:11:51
Bike
for one, even if i did that, it would still have unrestricted access to the filesystem and such
3:14:11
beach
I am pleased that you are working on it, because I think you will figure out lots of issues that would otherwise pop up later on in my SICL development.
3:15:16
Bike
CLOS is going to be annoying though, i can understand a little more now why you go through like four environments
3:18:42
beach
Yeah, CLOS is complicated that way. Recently, I have considered converting some of the generic functions to ordinary functions to avoid some of the problems with simultaneous but different mappings from names to objects.
3:19:42
beach
I have nothing concrete yet, but when I start contemplating SICL bootstrapping again, I will keep that option in mind if I get into trouble.
3:24:36
beach
Yeah, that's not the problem I had in mind. It is possible that, in the same bootstrapping phase, I need two different definitions of some function, called by two different generic functions. I might be able to fix that problem by inlining two different versions of the function and converting at least one of the generic functions to an ordinary function.
3:31:24
beach
The problem is that, in each bootstrapping phase, I use some classes created by the previous phase, and those are often "the same" classes, i.e. the MOP hierarchy of classes, but represented differently in each phase. In phase 1, they are ordinary host classes. In phase 2, they are host non-class instances. In phase 3, they are host header/rack combinations. I often need to call different versions of things like allocate-instance or