freenode/#clasp - IRC Chatlog
Search
14:48:08
drmeister
Bicyclidine: I hit an error while loading babel with the new changes - I'm trying to reproduce it. I'm just posting it here for reference.
14:48:10
drmeister
Error while trying to load definition for system pzmq from pathname /Users/meister/quicklisp/dists/quicklisp/software/pzmq-20171019-git/pzmq.asd: BUG: Input #<LEXICAL-LOCATION e> not previously defined
14:57:30
drmeister
90: (LAYOUT-PROCEDURE* #<FUNCTION strings.lisp^110^TOP-COMPILE-FILE> #<IRBUILDER :insert-block-name mtf-final1669 :function strings.lisp^110^TOP-COMPILE-FILE@0x7f9004bf0530 > #<BASIC-BLOCK@0x7f90001d4dd0
15:15:05
drmeister
::notify scymtym We are getting an error "No applicable method for architecture.builder-protocol:node-relation of types keyword keyword chain" - I'm putting this here because I couldn't remember it before.
15:17:37
scymtym
drmeister: that gf is part of the "unbuilding" protocol - destructuring a node into its kind, initargs and relations. it is not normally used when building trees, but let me check the parser
15:17:37
Colleen
scymtym: drmeister said 2 minutes, 32 seconds ago: We are getting an error "No applicable method for architecture.builder-protocol:node-relation of types keyword keyword chain" - I'm putting this here because I couldn't remember it before.
15:19:53
scymtym
drmeister: i see. it is used at https://github.com/scymtym/language.smarts/blob/future/src/smarts/parser/grammar.lisp#L22 to assess the partial results and potentially reshape them
15:23:23
scymtym
alternatively, define a method a method (defmethod node-relation ((builder YOUR-BUILDER) (relation (eql :element)) (node YOUR-CHAIN-NODE)) (ELEMENTS-OF node))
15:25:05
scymtym
i assume you builder produces instances of some class to represent chains. the specialized parameter (node YOUR-CHAIN-NODE) should specialize on that class
15:30:45
shiho
(defmethod architecture.builder-protocol:node-relation ((builder (eql :cando)) (head (eql :element)) (node chem:chain)) (format t "architecture.builder-protocol:node-relation ((builder (eql :cando)) (head (eql :element)) (node chem:chain)) node -> ~s~%" node))
15:32:22
scymtym
is the chain object complete? that method doesn't seem to return any elements, so i would expect the chain to just contain the atom
15:33:00
scymtym
"the atom" = the atom produced by atom-pattern in https://github.com/scymtym/language.smarts/blob/future/src/smarts/parser/grammar.lisp#L17
15:33:51
scymtym
again, i can try to rewrite the rule in way that works without this post-processing
15:37:55
scymtym
if you want to make it work as is, you have to check that your solution works for all three cases 1. only atom-pattern 2. only chain-pattern 3. atom-pattern and chain-pattern
15:39:21
scymtym
these two: https://github.com/scymtym/language.smarts/blob/future/src/smarts/parser/grammar.lisp#L16-L30
15:43:44
scymtym
i often make builders that support building and unbuilding (including the list builder), so i didn't notice
15:46:07
scymtym
not specifically. the idea is having a uniform protocol for taking things apart. this allow applying XPath queries to trees without caring about the specific tree representation, for examples
15:48:27
scymtym
i pushed a change which turns it into https://github.com/scymtym/language.smarts/blob/future/src/smarts/parser/grammar.lisp#L16-L34
15:51:51
shiho
It's in the smarts specification . - I don't want to damage the code because of my shitty memory.
15:53:38
shiho
I don't see any examples of smarts that starts with a bond - lets go with starting with an atom test
16:00:17
shiho
#i(CHEM:CHEM-INFO (:ROOT . #i(CHEM:SMARTS-ROOT (:TESTS . #i(CORE:HASH-TABLE-EQ (CORE:DATA . #A(T (0) ())) (CORE:REHASH-THRESHOLD . 1.0d0) (CORE:REHASH-SIZE . 2.0d0))) (:FIRST-TEST . #i(CHEM:ATOM-TEST (:SYM . :C) (:TEST . :SAPELEMENT))))))
16:06:08
bike
this eight line defparameter expands into hundreds of lines of code. the isolated smallest function the error is in is still three megabytes of dotfile
16:11:23
scymtym
assuming "C" should return an atom test, this change should do it: https://github.com/scymtym/language.smarts/blob/future/src/smarts/parser/grammar.lisp#L16-L31
17:29:14
bike
generate-ast results in a pointless conditional for lambda lists with &optional, which means a lexical location that only conditionally has a value (but dynamically the condition will always take that path, so there's no runtime problem)
18:33:10
bike
if i have generate-ast not do inlining on functions with &optional it works. so there's the problem.
18:46:40
drmeister
Bike: I was going to try to get back to working on chemistry code - but this &optional inlining issue leaves me dead in the water. How much trouble would it be to fork sicl and push this to the fork. Why don't we have this anyway - for pull requests and problems just like this.
19:26:55
bike
could fix that and put in a dumb assignment to fix clasp, or just stick with the patch
20:00:03
bike
i set the -p in an inlined function with &optional to be the argument, thinking i was being clever, but then if you pass NIL the -p will be wrong