freenode/#clasp - IRC Chatlog
Search
15:42:41
drmeister
Hmmmm, my first test suggested that the precalculated and on-the-fly calculated slot indices are identical - so that may not be the problem.
15:43:14
drmeister
That suggests that it's a problem with changing the class of an instance rather than changing a class.
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