freenode/#clasp - IRC Chatlog
Search
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